目录

  • 1 题目
  • 2 分析
  • 3 实现
    • 3.1 实现1(递归)
    • 3.2 实现2(非递归)
  • 4 运行结果

1 题目

古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(输出前40个月即可)

2 分析

将该例建立数学模型,规律为1,1,2,3,5,8, 13, 21, 34, 55, 89, 144, …,即下个月是上两个月之和,该模型在数学上称为fibonacci数列,通过这个规律可以构造递归函数,也可以构造非递归函数计算,显然递归函数的效率非常非常低,但是程序简洁明了(不过非递归的也不复杂…),递归公式如下:

3 实现

3.1 实现1(递归)

#include<stdio.h>int fibonacci(int n) {if (n == 1 || n == 2) {return 1;} else {return fibonacci(n - 1) + fibonacci(n - 2);}
}int main() {for (int i = 1; i <= 40; i++) {printf("第%d个月个数为%d\n", i, fibonacci(i));}return 0;
}

3.2 实现2(非递归)

#include<stdio.h>int main() {int f1 = 1;int f2 = 1;int month = 1; // 用于显示月份for (int i = 1; i <= 20; i++, month += 2) {printf("第%d个月的个数为%d\n", month, f1);printf("第%d个月的个数为%d\n", month + 1, f2);f1 = f1 + f2;f2 = f1 + f2;}return 0;
}

4 运行结果

第1个月的个数为1
第2个月的个数为1
第3个月的个数为2
第4个月的个数为3
第5个月的个数为5
第6个月的个数为8
第7个月的个数为13
第8个月的个数为21
第9个月的个数为34
第10个月的个数为55
第11个月的个数为89
第12个月的个数为144
第13个月的个数为233
第14个月的个数为377
第15个月的个数为610
第16个月的个数为987
第17个月的个数为1597
第18个月的个数为2584
第19个月的个数为4181
第20个月的个数为6765
第21个月的个数为10946
第22个月的个数为17711
第23个月的个数为28657
第24个月的个数为46368
第25个月的个数为75025
第26个月的个数为121393
第27个月的个数为196418
第28个月的个数为317811
第29个月的个数为514229
第30个月的个数为832040
第31个月的个数为1346269
第32个月的个数为2178309
第33个月的个数为3524578
第34个月的个数为5702887
第35个月的个数为9227465
第36个月的个数为14930352
第37个月的个数为24157817
第38个月的个数为39088169
第39个月的个数为63245986
第40个月的个数为102334155

C语言经典例11-斐波那契数列相关推荐

  1. c语言 兔子数列螺线图,经典算法大全51例——2.斐波那契数列(兔子数列)

    经典算法大全51例--2.斐波那契数列 算法目录合集 地址 说明 题目 原理分析 代码实现--Java 相关题目其他变形: 1.爬楼梯(来源:力扣LeetCode) 2.兔子成熟期拉长 官方题解 分析 ...

  2. 递归经典应用之斐波那契数列

    递归经典应用之斐波那契数列 (一)递归概念 将复杂问题 递推分解为最简问题 然后将结果回归的过程 Windows - Linux Linux = Linux is not Unix 使用方法: 自己调 ...

  3. python程序题斐波那契数列_Python_经典题_斐波那契数列

    古典问题:3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月兔子总数是多少?(使用循环实现) 分析: 第一个月是1对 第二个月还是1对 第三个月是2对(因为第 ...

  4. AS3实现经典算法(一) 斐波纳契数列

    package{ /* 斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1.1.2.3.5.8.13.21.--在数学上, 斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n- ...

  5. c语言斐波那契数列前20项和,,c语言利用数组求斐波那契数列的前20项

    推荐回答 一.斐波那契数列指的是这样一个数列1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711 ...

  6. C语言——递归函数(求斐波那契数列第n项的值)

    递归函数是指在一个函数中直接或者间接调用函数本身. 例如,设一个无返回值函数为fun,同时,设置一个整形形参变量为a ​ void fun(int a) {if(a>0){fun(a-1);pr ...

  7. C语言以递归求斐波那契数列(附完整源码)

    递归求斐波那契数列 递归求斐波那契数列完整源码(定义,实现,main函数测试) 递归求斐波那契数列完整源码(定义,实现,main函数测试) #include <locale.h> #inc ...

  8. 【C语言】递归-阶乘斐波那契数列

    递归 阶乘 int factori(int n) {if(n<=1) return 1;return n * factori(n-1); } int main() {printf("% ...

  9. c语言:已知斐波那契数列定义:f(0) = 0; f(1) = 1;f(n) = f(n-1) + f(n-2);请计算并输出数列的前n(n<=30)项。

    #include<stdio.h> int main() {     int a[30],x;     a[0]=0;     a[1]=1;     scanf("%d&quo ...

  10. c语言---c语言中的斐波那契数列程序

    首先就要先了解何为斐波那契数列---斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故 ...

最新文章

  1. 使用flot.js 发现x轴y轴无法显示轴名称
  2. 汇编Ring 3下实现 HOOK API
  3. “听话”的苏宁少东家
  4. 《SEO实战密码》读后一点感受
  5. 拓端tecdat|R语言使用Rasch模型分析学生答题能力
  6. 【项目篇-项目创新点怎么写?(两千字图文总结建议)】创新创业竞赛项目计划书、新苗国创(大创)申报书
  7. vs运行c语言代码快捷键,VS2010快捷键
  8. 怎么用计算机按反三角函数图像及性质,反三角函数图像及性质
  9. slqmf刀模工具_slq刀模绘图插件下载|
  10. 快速给PDF批量添加目录
  11. 2017年一季度工作回顾及感悟
  12. easyUI1.7学习第一天_menu表单
  13. 小白通过JDBC在AndroidStudio一步步来访问MYSQL数据库
  14. 有鱼上钩!修改游戏数据前的准备
  15. 《machine learning in action》机器学习 算法学习笔记 决策树模型
  16. Android 获得 usb 权限的两种方式
  17. Scrapy可以成功爬取数据,但存储数据的json文件为空(巨坑!!!)
  18. networkx读取gml文件失败
  19. 清华刘知远、黄民烈团队力作:一个「PPT」框架,让超大模型调参变简单
  20. windows(server2012以上、2007以上)部署onlyoffice-documentserver

热门文章

  1. php 中的 mysqli事务处理
  2. 黑马lavarel教程---3、数据库和视图注意点
  3. AngularJS学习篇(十)
  4. 【知识碎片】Asp.Net 篇
  5. 《Algorithm算法》笔记:元素排序(2)——希尔排序
  6. 应该了解的Openstack命令
  7. Awk中调用shell命令
  8. 设计模式-----单例模式
  9. idea不识别yml配置文件,怎么办?
  10. 生产路由跳转报错找不到js路径问题