走台階問題

2022-07-29 13:09:18 字數 846 閱讀 2974

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個台階的走法的總和。因此,這是乙個遞迴函式。也是乙個裴波那契函式。

下面給出乙個c++程式:

#includeusing namespace std;

int fstep(int n)

int main()

走台階問題

舉個例子,假設有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,...