编写一个C程序,用于打印斐波那契数列的前10个数

如题所述

……
通常的教材上讲到递归时,引用“斐波那契数列”的例子,其实我感觉这是一个误导。“斐波那契数列”的递归解决是效率最低的。

【递归版】
//打印斐波那契数列的前10项

#include <stdio.h>
#define MAX 10

int fib(int n);

int main(){
int i;
printf("斐波那契数列的前10项是:\n");
for(i=1;i<=MAX;i++){
printf("%d\t",fib(i));
}
return 0;
}

int fib(int n){
return n<3?1:(fib(n-1)+fib(n-2));
}

【迭代版】
//打印斐波那契数列的前10项
#include <stdio.h>
#define MAX 9

int main(){
int fib[MAX],i=2;
fib[0]=fib[1]=1;
printf("斐波那契数列的前10项是:\n%d\t%d\t",fib[0],fib[1]);
while(i<10){
fib[i]=fib[i-1]+fib[i-2];
printf("%d\t",fib[i]);
i++;
}
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-05-26
……
通常的教材上讲到递归时,引用“斐波那契数列”的例子,其实我感觉这是一个误导。“斐波那契数列”的递归解决是效率最低的。
【递归版】
//打印斐波那契数列的前10项
#include
<stdio.h>
#define
MAX
10
int
fib(int
n);
int
main(){
int
i;
printf("斐波那契数列的前10项是:\n");
for(i=1;i<=MAX;i++){
printf("%d\t",fib(i));
}
return
0;
}
int
fib(int
n){
return
n<3?1:(fib(n-1)+fib(n-2));
}
【迭代版】
//打印斐波那契数列的前10项
#include
<stdio.h>
#define
MAX
9
int
main(){
int
fib[MAX],i=2;
fib[0]=fib[1]=1;
printf("斐波那契数列的前10项是:\n%d\t%d\t",fib[0],fib[1]);
while(i<10){
fib[i]=fib[i-1]+fib[i-2];
printf("%d\t",fib[i]);
i++;
}
return
0;
}
第2个回答  2006-11-10
#include <stdio.h>

int main()
{
long int f1=1,f2=1;
int i;
for(i=1;i<=5/*这里是个数配置*/;i++)
{
printf("%12ld %12ld",f1,f2);
if(i%2==0) printf("\n");
f1=f1+f2;
f2=f1+f2;
}
getchar();
}
相似回答