Fibonacci数列定义如下:
第1,第2个数均为1,从第3个数开始,该数是其前面两个数之和。
Fibonacci数列为:1,1,2,3,5,8,13,… 。
编写函数,求Fibonacci数列的第n个数。
1.递归算法(常规)
#include<stdio.h>
int f(int n){
if(n==1||n==2)
return 1;
else
return f(n - 1) + f(n - 2);
}
int main(void){
int n;
scanf("%d", &n);
for (int i = 1; i <= n;i++){
printf("%d ", f(i));
}
}
2.递归算法(带备忘录的递归算法)
#include<stdio.h>
int f(int n){
static int m[50]={0};
if(n==1 || n==2) return 1;
if(m[n]==0) {
return m[n] = f(n-2) + f(n-1);
}
else
return m[n];
}
int main(void){
int n;
scanf("%d", &n);