中易网

编制非递归函数,输出斐波那契数列前20项数据

答案:3  悬赏:40  
解决时间 2021-03-14 14:19
用C语言 急需
解完加分
最佳答案
#include<stdio.h>
void fib(int n,int f0,int f1)
{
int f;//当前项
int i=0;
if(n<=0)return ;
if(n==1){ printf("%8d\n",f0); return; // 0}

if(n>=2)
printf("%8d,%8d",f0,f1);// f0 ,f1

for(i=2;i<n;i++) // 从第三项开始输出
{
f=f0+f1; // f(i) =f(i-2)+ f(i-1);斐波那契数列的递推公式;
f0=f1; // f0 =f(i-1), 下一轮循环 i++,所以 下一轮循环的i-2 本轮的i-1;
f1=f; // f1=f(i) ,下一轮循环 i++ ,所以 下一轮循环的i-1 本轮的i;
printf(",%8d",f);
}
printf("\n");
}
int main()
{ //必须知道前两项 1)0,1;2)1,1;3)1,2;
//这里为0,1;
fib(20,0,1);
return 0;
}
PS:利用数组实现的也不错,但是斐波那契数列增长很快,
我这个,和用数组的都会溢出。
如果项数很多的话,可能需要用64位整数计算,或者高精度的大整数计算。
全部回答
#include <stdio.h> #define NUM 20 int main() { int i; long fib[NUM] = {1,1}; for(i=2;i<NUM;i++) { fib[i] = fib[i-1]+fib[i-2]; } for(i=0;i<NUM;i++) { printf("第%d个斐波那契数:%d\n", i, fib[i]); } getch(); return 0; }
#include #define col 5 //一行输出5个 long fibonacci(int n) { //fibonacci函数的递归函数 if (0==n||1==n) { //fibonacci函数递归的出口 return 1; } else { return fibonacci(n-1)+fibonacci(n-2); //反复递归自身函数直到碰到出口处再返回就能计算出第n项的值 } } int main(void) { int i,n; n= 17; printf("fibonacci数列的前%d项\n", n); for (i=0; i
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯