【发布时间】:2017-03-24 01:28:27
【问题描述】:
我总是在尝试转换我创建的递归算法时遇到问题,该算法返回 2 个递归调用,直到满足基本情况。
很容易追溯每个递归调用的作用,但将它们转换为迭代有点令人困惑。
例如这个递归函数
BEGIN SEQ(n)
if (n == 1)
return 3;
else if (n == 2)
return 2;
else
return SEQ(n - 2) + SEQ(n - 1)
当我试图通过产生后续过程的递归时,这是相当直截了当的
序列(6) = 序列(4) + 序列(5)
序列(5) = 序列(3) + 序列(4)
序列(4) = 序列(2) + 序列(3)
序列(3) = 序列(1) + 序列(2)
SEQ(2) = 2
…
序列(3) = 3 + 2 = 5
SEQ(4) = 2 + 5 = 7
序列(5) = 5 + 7 = 12
SEQ(6) = 7 + 12 = 19
但是,我似乎无法找出一种迭代方式来准确返回递归的方式
【问题讨论】:
-
算法与示例不太匹配。你是说最后一行的
return SEQ(n-2) + SEQ(n-1)吗? -
抱歉,错字。
-
除了起始值之外,它的构建方式与斐波那契数列相同。您找到的任何迭代程序都很容易修改。
标签: algorithm recursion iteration