gpt4 book ai didi

python - 为什么 while 在这里一直循环?有人可以解释吗?

转载 作者:太空宇宙 更新时间:2023-11-04 08:26:08 24 4
gpt4 key购买 nike

我有下面的代码来生成斐波那契数列直到'num'

def fibo(num,a=0,b=1):
while b <= num:
print(b)
a, b = b, a+b
fibo(num,a,b)
fibo(30)

下面是输出。但是,如果我在我的代码中使用“if”而不是“while”,它就可以正常工作。但是我想知道 while here 有什么问题..

1
1
2
3
5
8
13
21
21
13
21
21
8
13
21
21
13
21
21
5
8
13
21
21
13
21
21
8
13
21
21
13
21
21
3
5
8
13
21
21
13
21
21
8
13
21
21
13
21
21
5
8
13
21
21
13
21
21
8
13
21
21
13
21
21
2
3
5
8
13
21
21
13
21
21
8
13
21
21
13
21
21
5
8
13
21
21
13
21
21
8
13
21
21
13
21
21
3
5
8
13
21
21
13
21
21
8
13
21
21
13
21
21
5
8
13
21
21
13
21
21
8
13
21
21
13
21
21
1
2
3
5
8
13
21
21
13
21
21
8
13
21
21
13
21
21
5
8
13
21
21
13
21
21
8
13
21
21
13
21
21
3
5
8
13
21
21
13
21
21
8
13
21
21
13
21
21
5
8
13
21
21
13
21
21
8
13
21
21
13
21
21
2
3
5
8
13
21
21
13
21
21
8
13
21
21
13
21
21
5
8
13
21
21
13
21
21
8
13
21
21
13
21
21
3
5
8
13
21
21
13
21
21
8
13
21
21
13
21
21
5
8
13
21
21
13
21
21
8
13
21
21
13
21
21

最佳答案

您正在调用 loop 以及 fibo 函数的递归。您只需要使用一个,以便此函数与 ifrecursion 一起使用:

def fibo(num,a=0,b=1):
if b <= num:
print(b)
a, b = b, a+b
fibo(num,a,b)

等于此函数有 while没有 递归:

def fibo(num,a=0,b=1):
while b <= num:
print(b)
a, b = b, a+b

基本上,如果您同时保留它们,您将在循环内的每个循环中调用 fibo 函数,并且每次调用都会创建一个新循环,在该循环中它会被一次又一次地调用。

重要提示

在 Python 中使用迭代函数比递归更好。这是因为 Python 不会优化 tail-recursion .

关于python - 为什么 while 在这里一直循环?有人可以解释吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57005253/

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