階段を登る(c++再帰)
3339 ワード
木の先生が階段を登ることを説明して、彼は毎回1級あるいは2級を歩くことができて、階段の級数を入力して、異なる歩き方の数を求めます:階段は全部で3級があって、彼は毎回すべて1級を歩くことができて、あるいは第1回は1級を歩いて、第2回は2級を歩くことができて、第2回は1級を歩いて、全部で3種類の方法です.
入力入力はいくつかの行を含み、各行は正の整数Nを含み、階段級数を表し、1<=N<=30は異なる走法数を出力し、各行入力は1行の出力に対応する
サンプル入力5 8 10サンプル出力8 34 89
最初にこの問題を見て、まず私が思いついたのは列挙で、1と2で始まる様々な答えを列挙しますが、再帰的な方法では実現しにくいので、1と2で始まる方法を求めることを思いつきました.
コードは次のとおりです.
入力入力はいくつかの行を含み、各行は正の整数Nを含み、階段級数を表し、1<=N<=30は異なる走法数を出力し、各行入力は1行の出力に対応する
サンプル入力5 8 10サンプル出力8 34 89
最初にこの問題を見て、まず私が思いついたのは列挙で、1と2で始まる様々な答えを列挙しますが、再帰的な方法では実現しにくいので、1と2で始まる方法を求めることを思いつきました.
コードは次のとおりです.
#include
using namespace std;
int walk(int n)
{
if(n==1)
return 1;
else if(n==2)
return 2;
else
return walk(n-1)+walk(n-2);
}
int main()
{
int n;
int m=1;
while (cin >>n)
{
cout<<walk(n)<<endl;
}
return 0;
}