<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
有一對兔子,從出生後的第 3 個月起每個月都生一對兔子。
小兔子長到第 3 個月後每個月又生一對兔子,假設所有的兔子都不死,問 30 個月內每個月的兔子總數為多少?
這是一個有趣的古典數學問題,我們畫一張表來找一下兔子數的規律吧
Tip:不滿 1 個月的兔子為小兔子,滿 1 個月不滿 2 個月的為中兔子,滿3個月以上的為老兔子。
可以看出,每個月的兔子總數依次為 1,1,2,3,5,8,13…這就是 Fibonacci數列。
總結數列規律:即從前兩個月的兔子數可以推出第 3 個月的兔子數。
該題目是典型的迭代迴圈,即是一個不斷用新值取代變數的舊值,然後由變數舊值遞推出變數新值的過程。
這種迭代與如下因素有關:初值、迭代公式、迭代次數。經過問題分析,演演算法可以描述為:
用C語言來描述選代公式即為fib=fibl+fib2。
其中 fib 為當前新求出的兔子數。
fib1 為前一個月的兔子數。
fib2 中存放的是前兩個月的兔子數,然後為下一次選代做準備。
進行如下的賦值fib2=fib1,fib1=fib,要注意賦值的次序,選代次數由迴圈變數控制,表示所求的月數。
完整程式碼
#include <stdio.h> int main() { long fib1 = 1; long fib2 = 1; long fib = 0; int i = 0; printf("%12d%12d", fib1, fib2); for (i = 3; i <= 30; i++) { fib = fib1 + fib2; printf("%12d", fib); if (i % 4 == 0) { printf("n"); } fib2 = fib1; fib1 = fib; } printf("n"); return 0; }
執行結果
程式碼解釋
這個程式雖然是正確的,但可以進行改進。
目前用 3 個變數來求下一個月的兔子數,其實可以在迴圈體中一次求出下兩個月的兔子數,就可以只用兩個變數來實現。
這裡將fib1+fib2 的結果不放在 fib 中,而是放在 fib1 中,此時 fib1 不再代表前一個月的兔子數,而是代表最新一個月的免子數。
再執行fib2=fib1+fib2,由於此時 fib1 中已經是第 3 個月的兔子數了,因此 fib2 中就是第 4 個月的兔子數了。
可以看出,此時 fib1 和 fib2 均為最近兩個月的兔子數,迴圈可以推出下兩個月的兔子數。
改程序式如下
#include <stdio.h> int main() { long fib1 = 1, fib2 = 1; int i = 0; for (i = 1; i <= 15; i++) { printf("%12d%12d", fib1, fib2); if (i % 2 == 0) { printf("n"); } fib1 = fib1 + fib2; fib2 = fib1 + fib2; } return 0; }
程式碼解釋
到此這篇關於詳解C語言解決經典問題之兔子產子的文章就介紹到這了,更多相關C語言兔子產子問題內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45