>> g(1) 1 >>> g(2) 2 >>> g(3) 3 >>> g(-6ren">
gpt4 book ai didi

python - 将此函数从递归转换为迭代

转载 作者:行者123 更新时间:2023-11-28 21:56:43 24 4
gpt4 key购买 nike

def g(n):
"""Return the value of G(n), computed recursively.

>>> g(1)
1
>>> g(2)
2
>>> g(3)
3
>>> g(4)
10
>>> g(5)
22
"""
if n<=3:
return n
else:
return g(n-1)+2*g(n-2)+3*g(n-3)

如何将其转换为迭代函数?直到现在,我才意识到编写递归函数有时比编写迭代函数更容易。之所以这么难我觉得是因为不知道函数在做什么操作。在递归的情况下,发生的事情并不明显。

我想写一个迭代定义,我知道我需要使用一个 while 循环,但每次我尝试写一个时,要么我向 g_iter(n) 添加额外的参数(当只有一个时),或者我进行递归调用。有人至少可以让我走上正确的道路吗?你不必给我一个完整的解决方案。

仅供引用:我们还没有了解到我在所有这些页面上看到的太常见的“堆栈”。我宁愿远离这个。

def g_iter(n):
"""Return the value of G(n), computed iteratively.

>>> g_iter(1)
1
>>> g_iter(2)
2
>>> g_iter(3)
3
>>> g_iter(4)
10
>>> g_iter(5)
22
"""
"*** YOUR CODE HERE ***"

最佳答案

def g(n):
if n <= 3:
return n
a, b, c = 1, 2, 3
for i in range(n - 3):
a, b, c = b, c, c + 2 * b + 3 * a
return c

UPDATE 对评论的响应,不使用 for 循环。

def g(n):
if n <= 3:
return n
a, b, c = 1, 2, 3
while n > 3:
a, b, c = b, c, c + 2 * b + 3 * a
n -= 1
return c

关于python - 将此函数从递归转换为迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20929796/

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