实现算法?

时间:2015-03-15 12:48:06

标签: algorithm recursion

我必须编写一个小程序来实现以下算法:

  

假设您有一个搜索算法,在每个递归级别,在搜索特定数据项时会排除一半数据。仅当剩下一个数据项时,搜索才会停止。当数据中的元素数量是1024时,需要多少级别的递归?

有人知道如何分析或有关如何开始的任何建议吗?

1 个答案:

答案 0 :(得分:2)

您需要找到d的最小值,以便:

1 * 2 * 2 * 2 * .... * 2    = 1024
    ____________________
    total of d times

以上情况属实,因为每次乘2实际上是递归中的一个级别,你从1个元素的stop子句开始,直到得到初始数据大小,即1024.

上述等式实际上是2^d = 1024

从双方提取log_2可以轻松解决这个问题:

log_2(2^d) = log^2(1024)
d = 10

P.S。请注意,上面是递归调用的数量,不包括初始调用,因此对方法的调用总数为d+1=11,一个来自调用环境,10个来自方法本身。