C语言 用递归法求斐波那契数列第n项值

如题所述

第1个回答  2015-09-17
斐波纳契数列(Fibonacci
Sequence)又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1960年代起出版了《斐波纳契数列》季刊,专门刊载这方面的研究成果。

用递归法计算斐波那契数列的第n项
#include <stdio.h>
int Fibonacci(int n)
{
if( n == 1 || n == 2) // 递归结束的条件,求前两项
return 1;
else
return Fibonacci(n-1)+Fibonacci(n-2); // 如果是求其它项,先要求出它前面两项,然后做和。
}

int main()
{
int n;
printf("please input n: ");
scanf("%d",&n);
printf("Result: %d\n",Fibonacci(n));
return 0;
}
第2个回答  2015-09-17
#include<stdio.h>
#include<string.h>
main(){
int a,b,i,j;
scanf("%d",&a);
while(a--){
char st[1000]={1,0},str[1000]={1,0},std[1000]={0 };
scanf("%d",&b);
int count=1;
for(i=2;i<b;i++){
strcpy(std,str);
for(j=0;j<count;j++){
str[j] += st[j];
str[j+1]+=str[j]/10;
str[j]%=10;
}
if(str[count]!=0)count++;
strcpy(st,std);
}

if(b==0)puts("0");
else
{
for(i=count-1;i>=0;i--){
printf("%d",str[i]);
}
puts("");
}
}
}追答

本回答被提问者采纳