关于索引的递归函数(Python)

dl5txlt9  于 2023-05-21  发布在  Python
关注(0)|答案(1)|浏览(94)

下面的代码打印出从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,但我并不总是相信他们。

2wnc66cl

2wnc66cl1#

我不知道我是否太迟了,但我希望这对你或其他人有所帮助。
不要担心不理解递归的某些东西,我也没有学过,第一次接触它可能会很困惑。如果你能更直观地看到第7行发生了什么,以及数字0,1,1,2,3,5,8,13是如何得到的,也许你会更好地理解。
我将一步一步地说明前6个数字(0,1,2,3,4,5)会发生什么

该函数使用Fibonacci属性,即序列中的每个数字都是前两个数字的总和。然后,通过将前面函数调用的结果与递减值相加,递归地计算它们 (x-1和x-2)。
如果函数可以说话,它基本上是:

    • 收到一个号码
  • 是0还是1?
  • 是吗?,那么准备好,取相应的1或0。
  • 没有?好的,我们用这个数字再次运行这个函数,直到我们得到0或1,然后我们把所有的0和1加在一起。

正如你所看到的,它接受每个数字并对其应用函数,直到它们减少到0或1。
我希望你能理解代码第7行发生了什么。

相关问题