gpt4 book ai didi

algorithm - 另一个内部递归调用的递归关系

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:12:52 26 4
gpt4 key购买 nike

我正在尝试分析这段代码的成本:

static int funct1(int x) {
if (x<=1) return x;
return funct1(funct1(x/2)) + 1;
}

我如何解决递归关系 T(n)=T(T(n/2))+1

最佳答案

您的分析不正确。 T(n) = T(f(n/2)) + T(n/2) + 1(你错过了 T(n/2) 但程序应该先计算T(n/2),然后运行T(f(n/2))。它不是 T(T(n/2))

现在尝试将f(n) 视为函数funct1 的值。假设 n = 2^k, f(2^k) = f(f(2^{k-1})) + 1 = f(f(2^{k-2 }) + 1) + 1 = ... = f(f(f(...f(1) + 1..)+1)+1) + 1f(1) = 1, f(2) = 2, f(3) = 2, f(4) = 3, f(8) = f(f(4)) + 1 = f(3) + 1 = 3, f(16) = f(f(8 )) + 1 = f(3) + 1 = 3f(32) = f(f(16)) + 1 = f(3) + 1 = 3。如您所见,它对所有值 2^kf(2^k) = 3 重复。

因此,T(n) = T(3) + T(n/2) + 1 = O(log n)

关于algorithm - 另一个内部递归调用的递归关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56413345/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com