当 Python 中的一个语句中有多个函数调用时,如何在递归函数中调用函数?
How are functions called in a Recursive function when there are more than 1 function call in one statement in Python?
def fibonacci(n):
if n == 0 or n == 1: # base c a s e s
return 1
else:
return fibonacci(n-1) + fibonacci(n-2)
print(fibonacci(10))
当调用 fibonacci(10) 时,fibonacci(n-1) 是先解析到基本情况,然后再解析 fibonacci(n-2) 吗?
来自the docs:
Python evaluates expressions from left to right.
所以是的,fibonacci(n-2) + fibonacci(n-1)
的求值顺序如您所述:首先 fibonacci(n-2)
求值,然后 fibonacci(n-1)
求值,然后整个表达式计算结果为这两个值的总和。
在这种情况下,递归没有什么特别之处。 Python 即使操作数不是递归函数调用,也会从左到右求值。
def fibonacci(n):
if n == 0 or n == 1: # base c a s e s
return 1
else:
return fibonacci(n-1) + fibonacci(n-2)
print(fibonacci(10))
当调用 fibonacci(10) 时,fibonacci(n-1) 是先解析到基本情况,然后再解析 fibonacci(n-2) 吗?
来自the docs:
Python evaluates expressions from left to right.
所以是的,fibonacci(n-2) + fibonacci(n-1)
的求值顺序如您所述:首先 fibonacci(n-2)
求值,然后 fibonacci(n-1)
求值,然后整个表达式计算结果为这两个值的总和。
在这种情况下,递归没有什么特别之处。 Python 即使操作数不是递归函数调用,也会从左到右求值。