题目描述
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。
n<=39
思路
①递归
②非递归
③打表
代码
#include<stdio.h>
#include<string.h>
//递归,超时
int Fibonacci(int n){
if(n==1||n==2)
return 1;
return Fibonacci(n-1)+Fibonacci(n-2);
}
//非递归
int Fibonacci_2(int n){
if(n==1||n==2)
return 1;
int a=1,b=1;
int c;
//定义三个变量,辅助后移即可
for(int i=3;i<=n;i++){
c=a+b;
a=b;
b=c;
}
return c;
}
int a[40]={0,1,1};
//主函数中打表,直接输出
int Fibonacci_3(int n){
return a[n];
}
int main()
{
int n;
scanf("%d",&n);
for(int i=3;i<40;i++){
a[i]=a[i-1]+a[i-2];
}
printf("%d\n",Fibonacci(n));
return 0;
}