最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解C語言解決經(jīng)典問題之兔子產(chǎn)子

 更新時(shí)間:2022年03月19日 11:27:13   作者:飛向星的客機(jī)  
有一對(duì)兔子,從出生后的第 3 個(gè)月起每個(gè)月都生一對(duì)兔子。小兔子長到第 3 個(gè)月后每個(gè)月又生一對(duì)兔子,假設(shè)所有的兔子都不死,問 30 個(gè)月內(nèi)每個(gè)月的兔子總數(shù)為多少?本文將用C語言解決這一經(jīng)典問題,需要的可以參考一下

1. 問題描述

有一對(duì)兔子,從出生后的第 3 個(gè)月起每個(gè)月都生一對(duì)兔子。

小兔子長到第 3 個(gè)月后每個(gè)月又生一對(duì)兔子,假設(shè)所有的兔子都不死,問 30 個(gè)月內(nèi)每個(gè)月的兔子總數(shù)為多少?

2. 題目分析

這是一個(gè)有趣的古典數(shù)學(xué)問題,我們畫一張表來找一下兔子數(shù)的規(guī)律吧

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

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

總結(jié)數(shù)列規(guī)律:即從前兩個(gè)月的兔子數(shù)可以推出第 3 個(gè)月的兔子數(shù)。

3. 算法設(shè)計(jì)

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

這種迭代與如下因素有關(guān):初值、迭代公式、迭代次數(shù)。經(jīng)過問題分析,算法可以描述為:

在這里插入圖片描述

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

其中 fib 為當(dāng)前新求出的兔子數(shù)。

fib1 為前一個(gè)月的兔子數(shù)。

fib2 中存放的是前兩個(gè)月的兔子數(shù),然后為下一次選代做準(zhǔn)備。

在這里插入圖片描述

進(jìn)行如下的賦值fib2=fib1,fib1=fib,要注意賦值的次序,選代次數(shù)由循環(huán)變量控制,表示所求的月數(shù)。

4. 代碼實(shí)現(xiàn)

完整代碼

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

運(yùn)行結(jié)果

在這里插入圖片描述

代碼解釋

在這里插入圖片描述

5. 算法升級(jí)

這個(gè)程序雖然是正確的,但可以進(jìn)行改進(jìn)。

目前用 3 個(gè)變量來求下一個(gè)月的兔子數(shù),其實(shí)可以在循環(huán)體中一次求出下兩個(gè)月的兔子數(shù),就可以只用兩個(gè)變量來實(shí)現(xiàn)。

這里將fib1+fib2 的結(jié)果不放在 fib 中,而是放在 fib1 中,此時(shí) fib1 不再代表前一個(gè)月的兔子數(shù),而是代表最新一個(gè)月的免子數(shù)。

再執(zhí)行fib2=fib1+fib2,由于此時(shí) fib1 中已經(jīng)是第 3 個(gè)月的兔子數(shù)了,因此 fib2 中就是第 4 個(gè)月的兔子數(shù)了。

可以看出,此時(shí) fib1 和 fib2 均為最近兩個(gè)月的兔子數(shù),循環(huán)可以推出下兩個(gè)月的兔子數(shù)。

改進(jìn)程序如下

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

代碼解釋

到此這篇關(guān)于詳解C語言解決經(jīng)典問題之兔子產(chǎn)子的文章就介紹到這了,更多相關(guān)C語言兔子產(chǎn)子問題內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解C++中普通舊數(shù)據(jù)(POD)的使用

    詳解C++中普通舊數(shù)據(jù)(POD)的使用

    普通舊數(shù)據(jù)就是內(nèi)存中的連續(xù)字節(jié)序列,是能夠被“僅當(dāng)作數(shù)據(jù)”處理的對(duì)象。這篇文章主要帶大家了解一下C++中普通舊數(shù)據(jù)的定義與使用,感興趣的可以了解下
    2023-03-03
  • C++示例講解string容器

    C++示例講解string容器

    c++相比c的一個(gè)好處就是實(shí)現(xiàn)了很多的容器和泛型算法,使得程序員的工作得到了很大的簡化,本文重點(diǎn)給大家介紹C++string容器基本概念講解,需要的朋友參考下吧
    2022-07-07
  • 淺析設(shè)計(jì)模式中的代理模式在C++編程中的運(yùn)用

    淺析設(shè)計(jì)模式中的代理模式在C++編程中的運(yùn)用

    這篇文章主要介紹了設(shè)計(jì)模式中的代理模式在C++編程中的運(yùn)用,代理模式最大的好處就是實(shí)現(xiàn)了邏輯和實(shí)現(xiàn)的徹底解耦,需要的朋友可以參考下
    2016-03-03
  • C語言中對(duì)數(shù)組賦值的三種形式

    C語言中對(duì)數(shù)組賦值的三種形式

    這篇文章主要給大家介紹了關(guān)于C語言中對(duì)數(shù)組賦值的3種形式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C語言具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Qt Creator使用教程的簡單說明

    Qt Creator使用教程的簡單說明

    如今 Qt Creator 功能十分強(qiáng)大了,包含項(xiàng)目模板生成、代碼編輯、UI 設(shè)計(jì)、QML 界面編輯、調(diào)試程序、上下文幫助等豐富功能,本文就詳細(xì)的介紹一下如何使用
    2021-08-08
  • C++實(shí)現(xiàn)LeetCode(130.包圍區(qū)域)

    C++實(shí)現(xiàn)LeetCode(130.包圍區(qū)域)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(130.包圍區(qū)域),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++實(shí)現(xiàn)圖片jpg格式變成16位565bmp格式

    C++實(shí)現(xiàn)圖片jpg格式變成16位565bmp格式

    這篇文章主要為大家詳細(xì)介紹了C++如何實(shí)現(xiàn)圖片jpg格式變成16位565bmp格式,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2025-03-03
  • C++中的命名空間詳細(xì)介紹

    C++中的命名空間詳細(xì)介紹

    大家好,本篇文章主要講的是C++中的命名空間詳細(xì)介紹,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02
  • C/C++ memset方法的誤區(qū)

    C/C++ memset方法的誤區(qū)

    memset 作為對(duì)內(nèi)存初始化的函數(shù),還是有不少坑和誤區(qū)的,今天就來對(duì)這個(gè)函數(shù)作一個(gè)總結(jié)。避免后期使用不當(dāng)踩入坑,需要的朋友可以參考下
    2021-04-04
  • C++ normal_distribution高斯正態(tài)分布函數(shù)的用法示例

    C++ normal_distribution高斯正態(tài)分布函數(shù)的用法示例

    高斯分布也稱為正態(tài)分布(normal distribution),常用的成熟的生成高斯分布隨機(jī)數(shù)序列的方法由Marsaglia和Bray在1964年提出,這篇文章主要給大家介紹了關(guān)于C++ normal_distribution高斯正態(tài)分布函數(shù)用法的相關(guān)資料,需要的朋友可以參考下
    2021-07-07

最新評(píng)論

蒙城县| 格尔木市| 炉霍县| 高邮市| 安新县| 肇庆市| 贵定县| 如东县| 张掖市| 余干县| 仁化县| 友谊县| 普兰县| 永州市| 仁布县| 五寨县| 汝阳县| 白玉县| 襄垣县| 洮南市| 纳雍县| 孝义市| 万宁市| 图们市| 天柱县| 延寿县| 兴义市| 桦甸市| 呼伦贝尔市| 连城县| 阜宁县| 新乡县| 屏东县| 郁南县| 丽江市| 朝阳区| 桦南县| 子长县| 苍南县| 赤峰市| 中江县|