【OJログ】階段を登る


テーマは簡単で、以下のように説明されています.
          ,   n 。      1   2 ,                ?
  :
           n(n<=50),       。
                。
  1
  :
5
                       
  :
8

簡単な問題ですが、数学の観点からこの問題を考えていたので、しばらく時間がかかりました.しかし、数学式は計算の過程で階乗が現れ、プログラムがオーバーフローしました.後で他の人に聞いて、再帰でやるべきだと思って、それから簡単に実現しました.ここに書くのは主に自分がプログラムの角度から問題を考えることを学ぶことを注意することです.
簡単ですが、コードを貼っておきましょう
#include<stdio.h>
int i[51] = {0};

int f(int n)
{   
     
    if(n <= 2) return n;

    if(i[n] != 0) return i[n];
    
    i[n] = f(n-1) + f(n-2);
    return i[n];
}


int main()
{
    int n;
    i[1] = 1;
    i[2] = 2;
 
    scanf("%d",&n);    
    //if(i) s++;
    
    printf("%d",f(n));
}