#Calculates to the index position of a fib number.
def f3(n):
if n < 2:
return n
return f3(n-2) + f3(n-1)
该函数只接受一个参数,但两个正在返回中发送,但它的工作原理!这里发生了什么事?级联和递归
如果我返回f3(n-3),则该函数发生故障。连接有什么影响?
#Calculates to the index position of a fib number.
def f3(n):
if n < 2:
return n
return f3(n-2) + f3(n-1)
该函数只接受一个参数,但两个正在返回中发送,但它的工作原理!这里发生了什么事?级联和递归
如果我返回f3(n-3),则该函数发生故障。连接有什么影响?
新增结果为单个值。
>>> 1 + 2
3
>>> [1] + [2]
[1, 2]
Python在返回它之前评估表达式f3(n-2) + f3(n-1)
,所以它实际上返回它们的值组合。 f3(n-2)
的情况也是如此,其首先评估n-2
,然后将其作为值传递给f3()
。
返回参数的数量与函数作为输入参数的数量无关。
线f3(n-2) + f3(n-1)
是只返回一个值,计算f3
用于输入n-2
,然后添加该值来对输入计算f3
的结果的结果n-1
在Python,该机构用于返回从功能的多个值是由包装他们一个元组里面,然后在调用函数时提取它们例如(在你的问题不是这样的!):
def multivalue(x, y)
return (x, y)
a, b = multivalue(5,10)
# here a holds 5, and b holds 10
当我尝试使用(n-3)func分解。为什么我必须在返回中连接两个? – pythondjango 2012-04-01 21:22:04
@pythondjango:你在哪里看到连接?这里没有连接。 – cha0site 2012-04-01 21:24:11
当你只使用'f3(n-3)'而不是'f3(n-2)+ f3(n-1)'?它因为斐波那契递归的工作方式。 我认为这可能有助于理解它是如何工作的:http://ozark.hendrix.edu/~burch/csbsju/cs/160/notes/29/0.html 。 – veiset 2012-04-01 21:26:42