分析:
4! = 4 * 3!
3! = 3 * 2!
2! = 2 * 1!
1! = 1
先定義函式,只有當num 為1時,是他本身,所以只有這乙個特例而已,用if寫出來,其餘的情況用else寫。
>>
def rec(num)
:>>
if num ==1:
>>
return
1>>
else
:>>
return num * rec (num -1)
>>result = rec(4)
>>
print
(result)
24
不知道else後怎麼寫,怎麼辦? :
函寫到數第五行的時候,可以用2!來舉特例。2! = 2 * 1!
先寫成:
return 2 * rec(1)
然後用變數num替換掉數值,變成
return num * ruc (num - 1)
注意:
遞迴函式容易造成死迴圈,原因是沒有結束遞迴的條件,而且會造成棧溢位。
在計算機中,函式呼叫是通過棧(stack)這種資料結構實現的,每當進入乙個函式呼叫,棧就會加一層棧幀,每當函式返回,棧就會減一層棧幀。由於棧的大小不是無限的,所以,遞迴呼叫的次數過多,會導致棧溢位。
拓展:
import sys
#設定遞迴次數
sys.setrecursionlimit = 1000 #最多遞迴1000次
#獲取遞迴次數
sys.getrecursionlimit()
函式使用注意事項
目錄 函式使用注意事項 1.自定義函式 1 無引數,無返回值 2 無引數,有返回值 3 有引數,無返回值 4 有引數,有返回值 5 函式名不能重複 2.函式呼叫 1 呼叫的方式 2 呼叫時,要寫實參 3 呼叫時,實參的個數和先後順序應該和定義函式中要求的一致 4 如果呼叫的函式有返回值,那麼就可以用...
wllvm使用及注意事項
export llvm compiler llvm gcc export llvm gcc prefix export llvm compiler path path to llvm 2.9 release asserts bin 這裡不能填llvm gcc的路徑,不然在extract bc的時候會...
WFP TreeView使用及注意事項
最近接手wpf的專案,從0開始,做些積累 hierarchicaldatatemplate hierarchicaldatatemplate顧名思義,分層資料模板,就是用來定義分層資料樣式的模板,一般多用於menuitem和treeviewitem datatype指定模板用於哪種資料型別 item...