python之路 走台階(遞迴)

2022-08-12 19:51:18 字數 2342 閱讀 2609

#

1.樓梯有n個台階,上樓可以一步上1階,也可以一步上2階,一共有多少種上樓的方法?

#斐波那契數列 第一項為1 第二項為2 也就是f(n)=f(n-1)+f(n-2),用遞迴求。

#給個分析的例子:

#有乙個11級的台階,乙個人可走一步也可走兩步,問這個人有多少種方法走完這個台階?#解:

#①只用一步走:1+1+1+1+1+1+1+1+1+1+1=11,共11步,只有c11,1=1種走法。

#②用了一次兩步走:1+1+1+1+1+1+1+1+1+2=11,共10步,有c10,1 =10種走法。

#③用了兩次兩步走:1+1+1+1+1+1+1+2+2=11,共9步,有c9,2 =36種走法。

#④用了三次兩步走:1+1+1+1+1+2+2+2=11,共8步,有c8,3= 56種走法。

#⑤用了四次兩步走:1+1+1+2+2+2+2=11,共7步,有c7,4=35種走法。

#⑥用了五次兩步走:1+2+2+2+2+2=11,共6步,有c6,1=6種走法。

#總共有1+10+36+56+35+6=144種

#理論上分析:只有乙個台階的話,只有1種走法,2級台階的話,可以一步乙個台階走,也可以一步2個台階走,共有2種走法。

#當台階數大於等於3之後,可以這麼分析:如果最後一步走乙個台階,那麼就是n-1個台階的走法的種類,如果最後一步走兩個台階,那麼就是n-2個台階的走法的種類,所以n個台階的走法種類就是n-1個台階和n-2個台階的走法的總和。因此,這是乙個遞迴函式。也是乙個裴波那契函式。

defstep(n):

if n == 1:

return 1

if n == 2:

return 2

else

:

return step(n-1)+step(n-2)

print(step(6))

# 斐波那契數列

# 1,2,3,5,8,13,,,,,,,

def step(n):

a,b = 1,1

while n > 1:

a,b = b,a+b # b = a + b 中的 a 還是原來的a,並不是把b賦值給a後的a

n -= 1

return b

print(step(6))

#

1. 樓梯有n個台階,上樓可以一步上1階,也可以一步上2階,也可以一步上3階,一共有多少種上樓的方法?

#給個分析的例子:

#有乙個6級的台階,乙個人可走一步也可走兩步也可走三步,問這個人有多少種方法走完這個台階?#解:

#①只用一步走:1+1+1+1+1+1=6,共6步,只有1種走法。

#②用了一次兩步走:1+1+1+1+2=6,共5步,有c5,1 =5種走法。

#③用了兩次兩步走:1+1+2+2=6,共4步,有c4,2 =6種走法。

#④用了三次兩步走:2+2+2=6,共3步,有1種走法。

#⑤用了一次三步走:1+1+1+3=11,共4步,有c4,1=4種走法。

#⑥用了兩次三步走:3+3=6,共2步,有1種走法。

#⑥用了一次兩步和一次三步走:有6種走法。

#總共有1+5+6+1+4+1+6=24種

#理論上分析:只有乙個台階的話,只有1種走法,

#2級台階的話,可以一步乙個台階走,也可以一步2個台階走,共有2種走法。

#3級台階的話,可以一步乙個台階走,也可以一步3個台階走,共有4種走法。

#當台階數大於等於4之後,可以這麼分析:如果最後一步走乙個台階,那麼就是n-1個台階的走法的種類,如果最後一步走兩個台階,那麼就是n-2個台階的走法的種類,如果最後一步走三個台階,那麼就是n-3個台階的走法的種類,所以n個台階的走法種類就是n-1個台階和n-2個台階和n-3個台階的走法的總和。因此,這是乙個遞迴函式。

defstep(n):

if n == 1:

return 1

if n == 2:

return 2

if n == 3:

return 4

else

:

return step(n-1)+step(n-2)+step(n-3)

print(step(6))

# 0,1,1,2,4,7,13,24

def step(n):

a,b,c = 0,1,1

while n > 1:

a,b,c = b,c,a+b+c # c = a + b + c 中的 a,b 還是原來的a,b,並不是把b,c賦值給a,b後的a,b

n -= 1

return c

print(step(4))

走台階問題

舉個例子,假設有3個台階,則有三種走法 分別是,1 1 1,1 2,2 1。很簡單的一道題,學過組合數學的人很快就能想到,這是乙個遞推關係。假設走完k個台階有f k 種走法。於是有如下公式 上面只給出了有多少種走法,那麼具體每一種走法是怎麼走的呢?比如n 4時,五種走法分別如下 1,1,1,1 1,...

走台階問題

舉個例子,假設有3個台階,則有三種走法 分別是,1 1 1,1 2,2 1。很簡單的一道題,學過組合數學的人很快就能想到,這是乙個遞推關係。假設走完k個台階有f k 種走法。於是有如下公式 遞迴演算法int count unsigned intn 非遞迴演算法int count unsigned i...

走台階問題

舉個例子,假設有3個台階,則有三種走法 分別是,1 1 1,1 2,2 1。很簡單的一道題,學過組合數學的人很快就能想到,這是乙個遞推關係。假設走完k個台階有f k 種走法。於是有如下公式 上面只給出了有多少種走法,那麼具體每一種走法是怎麼走的呢?比如n 4時,五種走法分別如下 1,1,1,1 1,...