#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