【发布时间】:2016-08-01 23:00:04
【问题描述】:
function What(n,a,total)
if n=0
return total
elseif n is even and n>0
return What(n/2, a+1, total)
elseif n is odd
return What((n-1)/2, a+1, total + 2^n)
endif
end What
我不确定如何找到该算法的封闭形式。这不是家庭作业问题,只是为即将到来的期末考试学习以前的考试。根据给定的标记/空间,它应该是一个小/简单的解决方案。
假设总数从 0 开始,
如果 n 是 2 的幂,我可以看到算法返回 2; 如果 n 是偶数,则返回 2^(n/2) + 2;如果 n 是奇数,则为 2^n + 2。
第一个 elseif 我得到了 T(n/2) + 1 次,第二个 elseif 我得到了 T((n-1)/2) + 2^n + 1 (?) 次。
总的来说,我不知道如何在这里找到一个封闭的表格/使用重复替换。
【问题讨论】:
-
您是想为算法的返回值,还是为它的时间复杂度寻找一个封闭的形式?不清楚。
-
@user2357112 我给出了运行时间的答案。我不认为我有封闭形式的数学:-)
标签: algorithm recurrence