Python 在递归Fibonacci程序中添加计数器

Python 在递归Fibonacci程序中添加计数器,python,recursion,fibonacci,Python,Recursion,Fibonacci,我正在使用一个基本的Python MIT免费课件,我遇到了一个递归练习的问题。原始程序接受一个整数,并使用递归提供其斐波那契函数。本书为程序提供了脚本,但随后的练习要求输入一种方法,让程序识别在计算fib(n)的过程中执行fib(2)的次数`` 代码如下: def fib(n): """Assumes n is int > 0 Returns Fibonacci Number of n""" if n ==

我正在使用一个基本的Python MIT免费课件,我遇到了一个递归练习的问题。原始程序接受一个整数,并使用递归提供其斐波那契函数。本书为程序提供了脚本,但随后的练习要求输入一种方法,让程序识别在计算fib(n)的过程中执行fib(2)的次数``

代码如下:

def fib(n):
    """Assumes n is int > 0
    Returns Fibonacci Number of n"""
    if n ==0 or n==1:
        return n        
    else:
        return fib(n-1) + fib(n-2)

def testfib(n):
    for i in range(n+1):
        print('fib of', i, 'is ', fib(i))

x=int(input('Enter a number: '))

print('Fibonacci of', x, 'is',fib(x))
print(testfib(x))
在另一个线程中给出了一个答案,我正在绞尽脑汁,想知道是否有人能解释一下,在下面的代码中,else部分的元组是如何作为变量名的? 参考:


逐行解释

f1, count1 = fib(n-1) 
这里fib返回
f1+f2,sum_counts
(见结尾),因此
f1=f1+f2
count1=sum_counts

f2, count2 = fib(n-2) 
return f1 + f2, sum_counts 
这里fib返回
f1+f2,sum_计数
(见结尾),因此
f2=f1+f2
count2=sum_计数

f2, count2 = fib(n-2) 
return f1 + f2, sum_counts 
fib方法在这里返回2个值
f1+f2,sum_counts
,所以我们必须用元组或2个变量解包2个值


在您的代码中,我们用2个变量解包值,下面是一个用元组解包值的示例

def test():
    return 1, 2, 3, 4, 5
my_list = test()
for val in my_list:
    print(val)

也许你对元组解包感到困惑。Python文档中对此进行了描述:
fib()。这样做被称为“元组解包”。@BurningKarl&martineau-谢谢你,这回答了我的问题,7u5h4r的回答提供了我所需要的清晰度。