斐波那契数列的C语言实现
Posted 夏末终年
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了斐波那契数列的C语言实现相关的知识,希望对你有一定的参考价值。
斐波那契数列
经典数学问题之一;斐波那契数列,又称黄金分割数列,指的是这样一个数列:
1、1、2、3、5、8、13、21、……
前两个数为1, 1,之后每个数都为为前面两个数的相加。
C语言实现:
输出斐波那契数列前n个数字:
1、普通算法
#include <stdio.h>
const int test2(void); int main(void) while(1) int flag = test2(); if(flag != 1) break; return 0; const int test2(void) int t1 = 1, t2 = 1, n, next, i; printf("How many:"); scanf("%d", &n); if(n <= 0) printf("Program Terminated!\\n"); return -1; for(i = 1; i <= n; i++) printf("%d ", t1); next = t1 + t2; t1 = t2; t2 = next; printf("\\n"); return 1;
2、递归实现
#include <stdio.h>
const int test3(const int);
const int test5(void);
int main(void)
while(1)
int flag = test5();
if(flag != 1) break;
return 0;
/* 使用递归方式 */
const int test3(const int index)
if(index == 1 || index == 2) return 1;
return (test3(index -1) + test3(index -2));
const int test5(void)
int i, n;
printf("How many:");
scanf("%d", &n);
if(n <= 0)
printf("Program Terminated!\\n");
return -1;
for(i = 1; i <= n; i++)
printf("%d ", test4(i));
printf("\\n");
return 1;
运行结果:
用递归的方法实现此数列简洁,方便理解。但是我们仔细观察上面的代码,就会发现此函数中存在着大量的冗余计算,并且n越大,冗余的越多。
输出数列中小于等于Max的数字
#include <stdio.h>
const int test6(void);
int main(void)
while(1)
int flag = test6();
if(flag != 1) break;
return 0;
const int test6(void)
int t1 =1, t2 = 1, next, Max;
printf("Max: ");
scanf("%d", &Max);
if(Max <= 0)
printf("Program Terminated!\\n");
return -1;
while(t1 <= Max)
printf("%d ", t1);
next = t1 + t2;
t1 = t2;
t2 = next;
printf("\\n");
return 1;
运行结果:
新人才疏学浅,有错的地方敬请指正!!
本文来自博客园,作者:夏末终年,转载请注明出处:https://www.cnblogs.com/xiamozhongnian/p/15861331.html
以上是关于斐波那契数列的C语言实现的主要内容,如果未能解决你的问题,请参考以下文章