05【C语言 & 趣味算法】经典:兔子产子问题(即:Fibonacci数列)

简介: 05【C语言 & 趣味算法】经典:兔子产子问题(即:Fibonacci数列)

—、前情回顾



04【C语言&趣味算法】“抓交通肇事犯"问题。算法改进:设置"标识变量”,有效减少循环次数。

03【C语言&趣味算法】(值得品味的一道题)打鱼还是晒网?结构体的简单应用。函数的应用。判断闰年的应用。求指定日期距1990年1月1日的天数。

02【C语言&趣味算法】借书方案问题:小明有5本新书,要借给A、B、C三位小朋友,若每人每次只能借1本,则可以有多少种不同的借法?

01【C语言&趣味算法】百钱百鸡问题(问题简单,非初学者请忽略叭)。请注意算法的设计(程序的框架),程序流程图的绘制,算法的优化。


二、Problem:兔子产子问题



这是一个很经典的问题。


2.1 Description of the problem(问题描述)

5f8056f526004becaf7993154175cd8b.jpg


2.2Analysis of the problem(问题分析)

7e02182b54644a82ab4c24d6f29cc048.jpg


2.3 Algorithm design(算法设计)


660ba36fc822421bbf00c3e9f8f9b2af.jpg


2.4 Full code and output(完整code及输出)

根据上面的分析,可以得到如下code:


// 趣味05:兔子产子 问题 
#include<stdio.h>
int main()
{
  long fib1=1,fib2=1,fib;
  int i;
  printf("%12ld%12ld",fib1,fib2);   /*输出第一个月和第二个月的兔子数*/
  for(i=3;i<=30;i++)
  {
    fib=fib1+fib2;      /*迭代求出当前月份的兔子数*/
    printf("%12d",fib);   /*输出当前月份兔子数*/
    if(i%4==0)
      printf("\n");   /*每行输出4个*/
    fib2=fib1;      /*为下一次迭代作准备,求出新的fib2*/
    fib1=fib;     /*求出新的fib1*/
  }
}

正如下面我标的箭头—样,从第三个值开始,均是前两个的值之和。

37bce91cad2b4bc3938fce0577e4e738.jpg


2.5 lssue extension optimisation(问题拓展优化)

50c154ed3f0f4a399ad8c53be11b532a.jpg

相关文章
|
2月前
|
存储 算法 C语言
"揭秘C语言中的王者之树——红黑树:一场数据结构与算法的华丽舞蹈,让你的程序效率飙升,直击性能巅峰!"
【8月更文挑战第20天】红黑树是自平衡二叉查找树,通过旋转和重着色保持平衡,确保高效执行插入、删除和查找操作,时间复杂度为O(log n)。本文介绍红黑树的基本属性、存储结构及其C语言实现。红黑树遵循五项基本规则以保持平衡状态。在C语言中,节点包含数据、颜色、父节点和子节点指针。文章提供了一个示例代码框架,用于创建节点、插入节点并执行必要的修复操作以维护红黑树的特性。
68 1
|
2月前
|
存储 算法
读《趣学算法》:重开算法之门,神奇的兔子数列(斐波那契数列)
本文通过《趣学算法》中的斐波那契数列问题,探讨了算法的递归实现、时间复杂度分析,并展示了如何通过迭代和优化存储空间来改进算法,最终将时间复杂度从指数级降低到线性级,并将空间复杂度从线性级降低到常数级。
52 0
读《趣学算法》:重开算法之门,神奇的兔子数列(斐波那契数列)
|
2月前
|
机器学习/深度学习 存储 并行计算
C语言与机器学习:K-近邻算法实现
C语言与机器学习:K-近邻算法实现
39 0
|
4月前
|
存储 算法 C语言
二分查找算法的概念、原理、效率以及使用C语言循环和数组的简单实现
二分查找算法的概念、原理、效率以及使用C语言循环和数组的简单实现
|
4月前
|
算法 C语言
C语言----判断n是否是2的次方数,利用到按位与&,算法n&(n-1)
C语言----判断n是否是2的次方数,利用到按位与&,算法n&(n-1)
|
4月前
|
机器学习/深度学习 算法 C语言
详细介绍递归算法在 C 语言中的应用,包括递归的基本概念、特点、实现方法以及实际应用案例
【6月更文挑战第15天】递归算法在C语言中是强大力量的体现,通过函数调用自身解决复杂问题。递归涉及基本概念如自调用、终止条件及栈空间管理。在C中实现递归需定义递归函数,分解问题并设定停止条件。阶乘和斐波那契数列是经典应用示例,展示了递归的优雅与效率。然而,递归可能导致栈溢出,需注意优化。学习递归深化了对“分而治之”策略的理解。**
71 7
|
4月前
|
算法 Java C语言
Java中的算法与C语言中的函数
Java中的算法与C语言中的函数
36 2
|
4月前
|
存储 算法 搜索推荐
【数据结构和算法】--- 基于c语言排序算法的实现(2)
【数据结构和算法】--- 基于c语言排序算法的实现(2)
31 0
|
4月前
|
搜索推荐 算法 C语言
【数据结构和算法】--- 基于c语言排序算法的实现(1)
【数据结构和算法】--- 基于c语言排序算法的实现(1)
36 0
|
4月前
|
算法 IDE 开发工具
c语言的经典算法代码
c语言进阶11-经典算法代码
下一篇
无影云桌面