兔子产子问题
一、问题描述
有一对兔子,从出生后的第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子,假设所有的兔子都不死,问30个月内每个月的兔子总数为多少?
二、解题思路
经过分析,这是一到典型的斐波那契额数列问题,可以由迭代来解决问题。
改题目是典型的迭代循环,即是一个不断用新值取代变量的旧值,然后用变量旧值递推出变量新值的过程。这种迭代与以下几种因素有关:初值,迭代公式,迭代次数。
此问题算法可分解为
1、迭代公式:f(n+2)=f(n+1)+f(n)。
2、初值:f(1)=1,f(2)=1。
3、循环次数:循环次数由循环变量控制。
三、代码实现

#include<iostream> using namespace std; int main() { int a = 1, b = 1, c; printf("%12d%12d", a, b); for (int i = 3; i <= 30; i++) { c = a + b; printf("%12d", c); if (i % 4 == 0) printf("\n"); a = b; b = c; } return 0; }
运行结果:
四、代码改进
以上代码是用三个变量来维护整个迭代过程,其实可以在一个循环中求出后两个值,那样就可以用两个变量来维护这个迭代过程,循环次数也直接少了一半。
在循环中,可以将a看为前面一个变量,b看为后面一个变量。a(第三项)用a(第一项)+b(第二项)来更新,b(第四项)用更新完的a(第三项)和b(第二项)来更新。
代码实现:

#include<iostream> using namespace std; int main() { int a = 1, b = 1; for (int i = 1; i <= 15; i++) { printf("%12d%12d", a, b); a = a + b; b = a + b; if (i % 2 == 0) printf("\n"); } return 0; }
运行结果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)