打表
Generator:
#include<stdio.h>
int f[47]={0,1,1,2,3,5};
int main(){
printf("f[47]={0,1,1,2,3,5,");
for(int i=6;i<=45;i++) f[i]=f[i-1]+f[i-2],printf("%d,",f[i]);
printf("%d};",f[45]+f[44]);
}
Output:
f[47]={0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368,75025,121393,196418,317811,514229,832040,1346269,2178309,3524578,5702887,9227465,14930352,24157817,39088169,63245986,102334155,165580141,267914296,433494437,701408733,1134903170,1836311903};
Answer:
#include<stdio.h>
int n,f[47]={0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368,75025,121393,196418,317811,514229,832040,1346269,2178309,3524578,5702887,9227465,14930352,24157817,39088169,63245986,102334155,165580141,267914296,433494437,701408733,1134903170,1836311903};
int main(){
scanf("%d",&n);
printf("%d",f[n]);
}
一般递推
#include<stdio.h>
int n,f[47]={0,1,1,2,3,5};
int main(){
scanf("%d",&n);
for(int i=6;i<=n;i++) f[i]=f[i-1]+f[i-2];
printf("%d",f[n]);
}