プライベートな連絡先の最初の情報
送料メール:
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
あなたが階段を登っているとします。建物の屋上に着くまでにn歩かかります。
一度に1段か2段ずつ登ることができます。建物の屋上に登るには、何通りの方法がありますか?
最初に1階と2階に登る人数を計算する関数を書いて並べて合計したのですが範囲外でした、後で範囲を変更したのですが結果が違ってしまいました、、、。
理由がわからない、
後で結果を見てみると、これはフィボナッチ数列ではないかと思いました。
それは後で起こります
- int climbStairs(int n) {
- //int n,j;
- int sum=0;
- //scanf("%d",&n);
- int f_1=1;
- int f_2=2;
- int f_n=0;
- //int f_n_1=0;
- if(n==0||n==1||n==2)
- {
- return n;
- }
- for(int i=1;i<=n-2;i++)
- {
- f_n=f_1+f_2;
- //f_n_1=f_n+f_2;
- f_1=f_2;
- f_2=f_n;
- }
- return f_n;
- // return 0;
-
- }
これからも頑張ってください! ! ! ! ! ! !
頭が空っぽです。
より良い解決策があれば、ぜひお知らせください。ありがとうございます。
フィボナッチ数列と同じです。つまり、再帰を使用してフィボナッチを書き込み、最後に出力します。
- int *func(int n,int* f_n,int f_1,int f_2)
- {
- --n;
- if(n == -1)
- return n;
- f_n[n] = f_1+f_2;
- f_1 = f_2;
- f_2 = f_n[n];
- func(n,f_n,f_1,f_2);
- return f_n;
- }
-
- int climbStairs(int n) {
-
- int f_n[n];
- func(n,f_n,0,1);
- return f_n[0];
- }
今日は昨日よりも良くなっているといいですね!
続けて! !