c 递归,递推法

 

#include<stdio.h>
//递归
long long func(int n){
    if(n==1 || n==2)return 1;
    return func(n-1)+func(n-2);
}

//数组
long long num[100]; int main(){ int n; scanf("%d",&n); // printf("%lld\n",func(n)); num[1]=1;num[2]=1;
for(int i=3;i<=n;i++){ num[i]=num[i-1]+num[i-2]; } printf("%lld\n",num[n]); return 0; }

 

//记忆化

long long num[100];

long long func(int n){
    if(n ==1 || n==2)return 1;
    if(num[n]!=0)return num[n];
    return num[n] = func(n-1) + func(n-2);
}

 

posted @ 2022-11-26 16:28  qingjiawen  阅读(28)  评论(0编辑  收藏  举报