题目
斐波那契数列为:0、1、1、2、3、5、8、13、21、34、55、……,根据该数列总结出的规律为:
f(0)=0
f(1)=1
f(n)=f(n-1)+f(n-2) (当n>1时)
求斐氏数列的f(n)。
假设f(n)的值所占内存不会超过4个字节。
输入
输入包括若干行,每行输入一个正整数n(0<=n<47),若输入-1则结束。
输出
对于每行输入的n的值,对应输出f(n),每个输出单独占一行。若输入是-1,则不输出任何结果。
样例输入 Copy
6
7
8
9
-1
样例输出 Copy
8
13
21
34
解题思路
#include<stdio.h>
#include<math.h>
int main(){
int n,f[47],a[47],i,j=0,k;
f[0]=0;f[1]=1;
while(scanf("%d",&n)==1&&n!=-1){
j=j+1;
if(n==0)a[j]=f[0];
if(n==1)a[j]=f[1];
if(n>=2){
for(i=2;i<=n;i++){
f[i]=f[i-1]+f[i-2];
}a[j]=f[n];
}
}
for(k=1;k<=j;k++)printf("%d\n",a[k]);
}
#include <stdio.h>
int f( int n );//递归函数
int main()
{
int n;
scanf("%d", &n);
printf("%d\n", f(n));
return 0;
}
int f(int n)
{
if(n==1||n==2)
return 1;
else
return f(n-1)+f(n-2);
}