Python中的递归函数

考虑Python中的这个基本递归:

def fibonacci(number):
    if number == 0: return 0
    elif number == 1:
        return 1
    else:
        return fibonacci(number-1) + fibonacci(number-2)

根据Fibonacci系列的(n-1)(n-2)函数,这是有意义的.

Python如何执行包含不在同一代码行内但在同一代码行内的另一个递归的递归? ‘finobacci(number-1)’是否完成所有递归直到达到’1’然后它与’fibonacci(number-2)’相同并添加它们?

为了比较,下面的递归函数用于将数字“x”提升为幂’y’,我可以理解递归,def函数调用自身直到y == 0,因为在一行中只有一个递归调用.仍然不应该所有结果都为’1′,因为当y == 0时,执行的最后一个命令是’return 1′,因此不返回x?

def power(x, y):
    if y == 0:
        return 1
    else:
        return x*power(x, y-1)
最佳答案
在表达fibonacci(number-1)fibonacci(number-2)中,第一个函数调用必须在调用第二个函数调用之前完成.

因此,第一次调用的整个递归堆栈必须在第二次调用开始之前完成.

转载注明原文:Python中的递归函数 - 代码日志