def?帝圭(n:?int)?-& gt;?int:
如果?n?==1?還是?n?==?2:
回歸?1
否則:
回歸?帝圭(n?-?1)?+?帝圭(n?-?2)對於主程序語句
回歸?(n?==?1?還是?n?==?2)?然後呢。1?還是?(地桂(n?-?1)?+?帝圭(n?-?2)),它由兩個由or分隔的語句組成。首先,or左邊的語句
回歸?(n?==?1?還是?n?==?2)?然後呢。1這個語句相當於用if條件語句做的壹個基本條件,就是用來結束遞歸語句,防止無限遞歸。相當於:
如果?n?==?1?還是?n?==?2:
回歸?1是指當樓梯只有壹層或兩層時,直接輸出1,因為只有壹條路可以走(1層原地不動,二層只能走壹步)。
然後or右邊的語句
還是?帝圭(n?-?1)?+?帝圭(n?-?2)本句中的or與if語句中的or等價
否則:也就是說,如果它不屬於
n?==?1?還是?n?==?2、開始執行下面的遞歸步驟,步驟如下
帝圭(n?-?1)?+?帝圭(n?-?2)這裏要有壹個遞歸的思想。假設有n級樓梯,走第壹級的時候只有兩種選擇,要麽兩步,要麽壹步,那麽:
跨越第壹階的第壹步:
那麽此時就剩下(n-1)級樓梯了,這個n-1級樓梯交叉法自然就變成了地軌(n-1)。
第壹步跨越兩步:
那麽此時就剩下(n-2)級樓梯了,這n-2級樓梯的穿越方式自然就變成了地軌(n-2)。
所以對於n級樓梯,總* * *交叉建築法是
帝圭(n?-?1)?+?帝圭(n?-?2)物種。
對於n-1或n-2樓梯,他們會有自己的。
帝圭(n?-?1)?+?帝圭(n?-?2)#?註意這裏的n代表是。n?-?1還是n?-?2,不是#?原來的n .這個方法,如果這樣下去,形成壹個遞歸,直到樓梯數n減少到1或2,遞歸結束。
題外話,其實這個問題是斐波那契數列的壹個應用,抽象成壹個數學問題:
有斐波那契數1,1,2,3,5,8,13,21,...?從第三個數開始,每個數都是前兩個數的和,求第n個數的值。
如果變成這樣的問題,可能想想更好。