下面的代码打印出从0到7的斐波那契序列。在函数调用自身的地方有一个递归,我没有学过这个。最初我认为递归是在范围内索引可迭代对象,但代码与索引不同,似乎是算术。
def fib (x):
if x == 0:
return 0
elif x == 1:
return 1
else:
return fib (x-1) + fib(x-2)
for i in range (8):
print (fib(i), end=",")
我没想到会发生什么,因为这是一个练习题。我试着问chatgpt,但我并不总是相信他们。
1条答案
按热度按时间2wnc66cl1#
我不知道我是否太迟了,但我希望这对你或其他人有所帮助。
不要担心不理解递归的某些东西,我也没有学过,第一次接触它可能会很困惑。如果你能更直观地看到第7行发生了什么,以及数字0,1,1,2,3,5,8,13是如何得到的,也许你会更好地理解。
我将一步一步地说明前6个数字(0,1,2,3,4,5)会发生什么
该函数使用Fibonacci属性,即序列中的每个数字都是前两个数字的总和。然后,通过将前面函数调用的结果与递减值相加,递归地计算它们 (x-1和x-2)。
如果函数可以说话,它基本上是:
正如你所看到的,它接受每个数字并对其应用函数,直到它们减少到0或1。
我希望你能理解代码第7行发生了什么。