gpt4 book ai didi

python - 在python中将递归转换为迭代

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

我刚刚编写了一个执行 Collatz Conjecture. 的基本程序但是,我遇到了堆栈溢出,因为我递归地编写了程序,而不是迭代(根据本网站上的其他问题)。这个问题还有其他一些答案,但我不确定如何在我自己的程序中实现它们。简化版本如下:(编辑:我只是翻译了一些代码以使其更简单,实际上我在运行它时遇到了问题,但你知道发生了什么 - pastebin of actual code )

def collatz(number):
if number == 1:
print('Finished!')

if number % 2 == 0:
number = number/2
collatz(number)
elif number % 2 != 0:
number = (number*3) + 1
collatz(number)

n = int(input('Pick a number'))
collatz(n)

这看起来很简单,但我似乎无法真正理解这一点。我尝试了一个更简单的例子:

def fun(n):
while n < 10:
n += 1
fun(n)

fun(1)

我试图通过迭代我在这个网站上看到的例子来转换它

def fun(n):
while n < 10:
n += 1
return n

fun(1)

但是我不确定如何实现n的返回来迭代程序。

最佳答案

一般来说,后两个例子会写成:

def recr_fun(n):
if n >= 10:
return n
return recr_fun(n+1)

def iter_fun(n):
while n < 10:
n += 1
return n # note identation

请注意,递归版本必须通过递归调用将结果传回,而迭代版本循环完成后返回。

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

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