当前课程知识点:程序设计基础 > 第六章 递推与动态规划 > 6.1 兔子数列问题 > 6.1.4 不用数组递推
前面我们用两种不同的递推
来计算了兔子的总数这个问题
而且呢我们在这个过程中间呢都用到了数组
那有同学问 我们的递推实际上
要计算当前这个月的兔子的总数的时候
只涉及到前一个月 或者最多前两个月的兔子数目
那么 问什么要用数组呢 能不能不用数组呢
这是一个很好的问题
我们当然可以不用数组
我们就以兔子总数的这个递推公式来说
我们知道当前这个月兔子的总数呢
等于前一个月兔子数加上一个月兔子数
所以呢我们可以用三个变量来表示这样一种递推关系
那么写成流程图呢是这个样子的
我们同样进行递推 所以有两个重要的步骤
第一个特点是初值 第二个是递推
那么在初值部分呢
显然我们这个时候要把前一个月
和上一个月的值先确定下来
它们对应了我们的第一个月
和第二个月的兔子总数分别是1
递推的控制呢跟原来是一样的
当然这个时候我们需要用一个新的变量
来代替原来的数组的变量
所以我们的三个计算的步骤分别是说
计算当月的兔子数等于前两个月的兔子数之和
然后呢 我们要更新前两个月的数目
这里呢我们要注意一下我们赋值的一个顺序
以免把我们还需要有用的值给覆盖掉了
大家看到我们的顺序是说计算完当月的兔子数以后呢
我们先把前一个月的进行赋值
因为前一个月的肯定没用了
那么前一个月的赋值呢应该就等于上个月的兔子数
然后上个月的兔子数呢
更新成刚才计算的当月的兔子数
这样我们的循环就能够跑起来了
那么由于我们控制的循环次数没有变
所以最后我们输出总数的时候呢
跟刚才的那个代码差不多
我们直接可以输出了这个当月的兔子数
我们也来看一下这样的一个程序
在执行的时候是什么样子的
在设定初值的时候呢
我们把前月和上月的兔子数都先设置为1
这个时候 当月的这个变量的值
其实还没有计算得到
那我们就开始递推了
从i=2也就是从第三个月开始
这是我们的循环第一轮
这个时候呢我们首先计算这个月
也就是当月的兔子数目
然后呢依次的更新前一个月的兔子数
和上个月的兔子数
然后我们进入第二轮 也就是i=3
先计算当月兔子数 然后更新前一个月兔子数
再更新上一个月的兔子数
这样依次不断的循环执行
i=4的时候是第三轮
那i=5的时候是第四轮 然后第五轮
当i=7的时候跟之前的一样
这个时候我们的循环条件不满足也就退出了
然后输出总数这是我们的执行过程
-1.1 基础知识
-1.2 买菜问题
-1.3 数学运算
-1.4 补充说明
-1.5 总结
--1.5 总结
-程设论道
--程设论道
-师生问答
-第一章 编程初步--语法自测
-2.1 关于超级计算器的几点思考
-2.2 电子秤模拟 — 背景介绍及需求分析
-2.3 电子秤模拟 — 代码实现
-2.4 变量定义与变量类型
-2.5 猜数游戏与数据表示
-2.6 关于变量的讨论
--公告
-2.7 变量体现的计算思维
-程设论道
--程设论道
-师生问答
--师生问答
-第二章 变量与代数思维--语法自测
-3.1 谁做的好事——语义表示
-3.2 谁做的好事——真假检查
-3.3 谁做的好事——循环枚举
-3.4 谁是嫌疑犯——多重循环枚举
-3.5 谁是嫌疑犯——破案线索表示
-3.6 谁是嫌疑犯——用二进制枚举
-程设论道
--程设论道一
--程设论道二
--程设论道三
-师生问答
-第三章 逻辑推理与枚举解题--语法自测
-4.1 插花游戏
-4.2 筛法
-4.3 线性查找
-4.4 折半查找
--4.4.1 提问
-4.5 排序问题
-4.6 总结
--4.6.1 总结
-程设论道
--程设论道二:筛法
-师生问答
-第四章 筛法与查找--语法自测
-5.1 阶乘
-5.2 排序
-5.3 矩阵填充
-5.4 分书与八皇后
-5.5 青蛙过河
-程设论道
--程设论道一
--程设论道二
-师生问答
--师生问答一
--师生问答二
-第五章 分治思想与递归--语法自测
-6.1 兔子数列问题
-6.2 分鱼问题
-6.3 橱窗的插花问题
-6.4 最长公共子序列问题
-程设论道
--程设论道一
--程设论道二
-师生问答
--师生问答
-第六章 递推与动态规划--语法自测
-7.1 统计记录总数
-7.2 统计活跃用户数
-7.3 统计在线时长
--7.3.2 结构
-7.4 总结
--7.4.1 总结
-程设论道
--程设论道
-师生问答
--师生问答
-第七章 文本数据处理--语法自测
-8.1 将数据组织成链表
-8.2 提高链表访问效率 —— 哈希链表
-8.3 以二进制文件存储链表
-程设论道
--程设论道一
--程设论道二
-师生问答
--师生问答
-第八章 非文本数据处理--语法自测
-9.1 自动售卖程序
-9.2 配制水果信息
-9.3 指定界面语言
-程设论道
--程设论道
-师生问答
--师生问答
-第九章 可配置的程序设计--语法自测