【发布时间】:2016-06-14 11:11:17
【问题描述】:
如何将下面的递归算法变成迭代算法?
count(integer: n)
for i = 1...n
return count(n-i) + count(n-i)
return 1
该算法基本上计算以下内容:
count(n-1) + count(n-2) + ... + count(1)
【问题讨论】:
-
count (integer: n) return 2^n-1 -
我应该澄清一下,不使用 2^n-1
-
这不是尾递归算法,因此将其转换为迭代虽然可能,但并非易事。
-
1<<n - 1与2^n - 1相同并且“不使用2^n -1” -
该算法没有意义。您从 aloop 的第一次迭代返回。这应该是
if n > 1而不是for i to n?
标签: algorithm recursion iteration