C语言练习004:斐波那契数列
斐波那契数列是一种非常有意思的数列,由 0 和 1 开始,之后的斐波那契系数就由之前的两数相加。用数学公式定义斐波那契数列则可以看成如下形式:
F0=0
F1=1
Fn=Fn-1+Fn-2
我们约定Fn表示斐波那契数列的第n项,你能知道斐波那契数列中的任何一项吗?
输入包括一行,包括一个数字N(0≤N≤50)。
输出包括一行,包括一个数字,为斐波那契数列的第N项的值。
递归
int fibonacci(int n);
int main(){
int n;
scanf("%d",&n);
int result=fibonacci(n);
printf("%i",result);
}
int fibonacci(int n){
if(n==0) return 0;
if(n==1) return 1;
return fibonacci(n-1)+fibonacci(n-2);
}
非递归
1 #include
2
3 int fib(int n){
4 int i=3;
5 int f1,f2;
6 int m;
7 f1=f2=1;
8 if(n==1)return 1;
9 if(n==2)return 1;
10 while(i<=n){
11 m=f1+f2;
12 f1=f2;
13 f2=m;
14 i++;
15 }
16 return m;
17 }
18
19 int main(){
20 int n;
21 scanf("%d",&n);
22 printf("%i\n",fib(n));
23 return 0;
24 }