亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言怎么解決兔子產子問題

發布時間:2022-03-19 14:05:46 來源:億速云 閱讀:287 作者:iii 欄目:開發技術

本篇內容主要講解“C語言怎么解決兔子產子問題”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“C語言怎么解決兔子產子問題”吧!

1. 問題描述

有一對兔子,從出生后的第 3 個月起每個月都生一對兔子。

小兔子長到第 3 個月后每個月又生一對兔子,假設所有的兔子都不死,問 30 個月內每個月的兔子總數為多少?

C語言怎么解決兔子產子問題

2. 題目分析

這是一個有趣的古典數學問題,我們畫一張表來找一下兔子數的規律吧

C語言怎么解決兔子產子問題

Tip:不滿 1 個月的兔子為小兔子,滿 1 個月不滿 2 個月的為中兔子,滿3個月以上的為老兔子。

可以看出,每個月的兔子總數依次為 1,1,2,3,5,8,13…這就是 Fibonacci數列。

總結數列規律:即從前兩個月的兔子數可以推出第 3 個月的兔子數。

3. 算法設計

該題目是典型的迭代循環,即是一個不斷用新值取代變量的舊值,然后由變量舊值遞推出變量新值的過程。

這種迭代與如下因素有關:初值、迭代公式、迭代次數。經過問題分析,算法可以描述為:

C語言怎么解決兔子產子問題

用C語言來描述選代公式即為fib=fibl+fib2。

其中 fib 為當前新求出的兔子數。

fib1 為前一個月的兔子數。

fib2 中存放的是前兩個月的兔子數,然后為下一次選代做準備。

C語言怎么解決兔子產子問題

進行如下的賦值fib2=fib1,fib1=fib,要注意賦值的次序,選代次數由循環變量控制,表示所求的月數。

4. 代碼實現

完整代碼

#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;
}

運行結果

C語言怎么解決兔子產子問題

代碼解釋

C語言怎么解決兔子產子問題

5. 算法升級

這個程序雖然是正確的,但可以進行改進。

目前用 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語言怎么解決兔子產子問題”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

高邑县| 麻城市| 黔西县| 莱芜市| 花莲县| 阳原县| 朝阳区| 东乡族自治县| 岑溪市| 烟台市| 阿鲁科尔沁旗| 津市市| 郸城县| 呈贡县| 招远市| 柏乡县| 资源县| 延边| 淄博市| 天镇县| 连州市| 兰州市| 石阡县| 镇安县| 翼城县| 大庆市| 南陵县| 闵行区| 宿松县| 涞水县| 林西县| 都安| 称多县| 定结县| 堆龙德庆县| 和顺县| 德令哈市| 龙里县| 宣威市| 漯河市| 宝山区|