通过Master定理和迭代方法的递归关系-不同对数的底数

问题描述

我使用Master定理进行了二元搜索递归关系,并使用了迭代方法进行了二元搜索递归关系。使用迭代方法,我得到log 2 (n)。但是,根据大师的定理,情况2是log(n)。

是因为母定理没有对数以2为底的原因,还是我做错了什么?

解决方法

这些方法使用JSfiddle here给出asymptotic analysis。大写O表示:

O(logn)= O(log 2 n)= O(log 10 n)...

换句话说:对数的底数不会影响渐近分析,并且得到的结果是等效的。

,

所有对数都是成比例的:对于任何以b和d为底的对数,以及任何严格的正实数x:

log_b(x) = log_d(x) / log_d(b)

如果您不关心常数因子,则可以互换对数。

示例:在基数2中写入一个数字所需的位数与在基数10中写入该数字所需的位数近似成比例。比例常数为log_10(2)= 1 / log_2(10)= 〜0.301。