函数 $f colon mathbb{Z_{>0}} o mathbb{R}$ 满足
$f(1) = 0$,
$f(n) = f(n/2) + 1$,$n$ 是偶数;
$f(n) = f((n + 1) / 2) + 1$,$n$ 是奇数。
试证明 $f(n) = lceil log_2 n ceil$。
证明:对 $n$ 用归纳法。以下 $n > 1$。
若 $n$ 是偶数,则 $f(n) = f(n /2) + 1 = lceil log_2 n / 2
ceil + 1 = lceil (log_2 n / 2) + 1
ceil = lceil log_2 n
ceil$。 若 $n$ 是奇数,则 $f(n) = f((n + 1) / 2) + 1 = lceil log_2 (n + 1) / 2
ceil + 1 = lceil (log_2 (n + 1) / 2) + 1
ceil = lceil log_2 (n + 1)
ceil$ 。我们要证明 $lceil log_2 (n + 1)
ceil = lceil log_2 n
ceil$。由 $n$ 是奇数且 $n > 1$ 知 $log_2 n$ 不是整数,故有 $ log_2 n < lceil log_2 n
ceil$。若 $lceil log_2 n
ceil < log_2 (n + 1)$,则有 $ n < 2^{ lceil log_2 n
ceil} < n + 1 $。这与 $ 2^{ lceil log_2 n
ceil}$ 是整数相矛盾,所以必有 $log_2 (n + 1) le lceil log_2 n
ceil$,从而有 $lceillog_2 (n + 1)
ceil le lceil log_2 n
ceil$,也就是 $lceillog_2 (n + 1)
ceil = lceil log_2 n
ceil$。
也可以从 $n$ 的二进制表示入手证明,不过不容易说清楚。