c语言用函数求斐波那契数列(并进行多种结果的打印)

首页常识更新时间:2022-12-29 15:42:47

今天呢,并没有继续我们的排序算法,因为昨天的那题直接插入排序,还是比较难的,特别是对于for循环方面的理解,需要花一些时间。

所以,我打算用一道较为简单的题目给大家涨涨信心,其实并没有那么难。

斐波那契数列,大家或多或少都听说过,也指的是黄金分割数列。

如{0,1,1,2,3,5,8,13,21,34,55}

这个数列指的就是斐波那契数列。

它具有很明显的特征,那就是从第三个元素开始,后面的元素都是前两个元素之和。

知道这一点的话,对于如何使用C语言来实现斐波那契数列就很容易了。

不过呢,仅仅只是输出斐波那契数列难度太低,在这里呢我给自己提了三个要求,分别是:

1、输出斐波那契数列10个元素并输出第十个元素,这个最简单,解释输出0,1,1,2,3,5,8,13,21,34,第十个元素是34。

2、输出斐波那契数列,在自己输入的指定数值大小前停下来,比方说我输入一个30,那么就应该在21这边停下,至于34就不会打印出来。

3、用数组的形式来进行存储元素并表现出来,这个就是用数组的形式来存储数据,并进行打印,特别需要注意的是数组的下标是从0开始的。

用流程图来理清逻辑

与我们之前遇到的题目相比,这道题着实很简单,不过呢,要完整按照这个要求把所有的结果给打印出来,还是锻炼自己的一个基本功。

要求一代码实现

首先是针对第一个要求,这就非常简单,要输出斐波那契数列的前十个数,只需要先用变量定义好前两个数,也就是0和1,那么第三个数就是0 1。

话不多说,直接把代码给放上来:

//输出几项 //斐波那契数列 0、1、1、2、3、5、8、13、21 #include<stdio.h> int main() { int a = 0; int b = 1; int sum = 0; for(int i = 1; i<=10; i ){ printf("%d ", sum); sum = a b; b = a; a = sum; } }

测试结果为:

如果是单独输出第十个元素,也就是34这个元素的话,只需要把sum的结果放在最外面,以及把循环的次数减少到9次,那么最后恰好可以输出第十个元素。

//输出几项 //斐波那契数列 0、1、1、2、3、5、8、13、21 #include<stdio.h> int main() { int a = 0; int b = 1; int sum = 0; for(int i = 1; i<=9; i ){ sum = a b; b = a; a = sum; } printf("%d ", sum); }

测试结果:

要求二代码实现

至于第二个要求,输出斐波那契数列,在自己输入的指定数值大小前停下来,这个难度也不大,最主要的就是在前面加一个需要自己输入的指定数值,也就是scanf输入,还有的话,就是需要在for循环里加一个和小于输入的值。

//输出几项 //斐波那契数列 0、1、1、2、3、5、8、13、21 #include<stdio.h> int main() { int a = 0; int b = 1; int sum = 0; int number; scanf("%d", &number); for(int i = 1; i<=100&&sum<=number; i ){ printf("%d ", sum); sum = a b; b = a; a = sum; } printf("\n"); }

测试结果:

要求三代码实现

至于第三个要求,也就是用到了数组的形式来进行输出,首先,我们必须要在数组中定义两个数,也就是斐波那契数列最开始的两个数,分别为0和1,有这两个数之后,才可以打印第三个数。

其次,正如数组第一个元素是0,第二个元素是1,那么array[0] array[1]=array[2],要注意这一点,再有,交换位置变化值的时候,需要一个临时变量来进行存储,所以像冒泡排序一样要用到一个Temp;

//输出几项 //斐波那契数列 0、1、1、2、3、5 #include<stdio.h> int main() { int Temp = 0; int array[100] = {0,1}; for(int i = 0; i< 10; i ){ Temp = array[i 1]; printf("%d ", array[i]); array[i 2] = array[i] array[i 1]; array[i] = Temp; } }

测试结果:

总结

斐波那契数列还是蛮简单的,休闲之余写来可以当作放松一下,问题不是很大。

,
展开阅读全文
推荐内容
热门内容
热门文章

© 2007-2022 http://www.anhuiqq.cn,All Rights Reserved.