求教,用递归编写一个裴波那切数列,输出数列的前三十项,要求每行输出6个数。这个要怎么写呢?

可用到的公式当n=0,f(n)=0;
当n=1或2,f(n)=1;
当n>2,f(n)=f(n-1)+f(n-2).

#include "stdio.h"

int fabnaci(int n) //生成该n所对应的斐波那契额数
{
int i,j;
if(n==0)
return 0;
else if(n==1)
return 1;

return fabnaci(n-1)+fabnaci(n-2); //递归调用
}

void main()
{
int fab[1000],n,i,count=0;
scanf("%d",&n);
for(i=0;i<n;i++) //按要求输出前30个。即是n从0到29(n也取29)
fab[i]=fabnaci(i); //数组储存起来该斐波那契数
for(i=0;i<n;i++)
{printf("%d,",fab[i]);
count++;
if(count%6==0) ///按格式输出换行,每6个换行。
putchar(10);
}
}追问

大哥,那个fabnaci有什么作用啊,虽然注释但还是不明白,这个能用其他的替换么?

追答

可以,只是个函数名而已,你只要把对应的名字全部换成你要的函数名字就好了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-08
int fbnc(n){
if(n==1)
return 1;
else if(n==2)
return 2;
else if(n>2)
return fbnc(n-1)+fbnc(n-2);
}