把这个程序改成非递归
以下是将递归程序转换为非递归程序的方法:
def fibonacci(n):
if n <= 1:
return n
else:
return fibonacci(n-1) + fibonacci(n-2)
我们可以使用一个while循环和一个栈来模拟递归:
def fibonacci(n):
if n <= 1:
return n
stack = [n]
result = 0
while stack:
n = stack.pop()
if n <= 1:
result += n
else:
stack.append(n-1)
stack.append(n-2)
return result
该代码先将n压入堆栈中,然后不断弹出堆栈中的项,直到堆栈为空。对于每个弹出的项,如果它小于或等于1,则将其添加到结果中。否则,将其左右子项压入堆栈中以进行后续处理。
原文地址: https://www.cveoy.top/t/topic/J2t 著作权归作者所有。请勿转载和采集!