首页 > 其他分享 >兔子产子问题

兔子产子问题

时间:2023-04-23 09:00:52浏览次数:29  
标签:变量 迭代 产子 int 兔子 问题 次数 循环

一、问题描述

  有一对兔子,从出生后的第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;
}
View Code 运行结果:

 

四、代码改进

  以上代码是用三个变量来维护整个迭代过程,其实可以在一个循环中求出后两个值,那样就可以用两个变量来维护这个迭代过程,循环次数也直接少了一半。

在循环中,可以将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;
}
View Code

运行结果:

 

标签:变量,迭代,产子,int,兔子,问题,次数,循环
From: https://www.cnblogs.com/zk126/p/17345438.html

相关文章

  • 【IT老齐001】单体架构升级问题
    【IT老齐001】单体架构升级问题不谈场景的架构设计都是耍流氓架构没有对不对,只有合不合适架构是宏观设计的标准框架是具体实现的规则架构是取舍的艺术场景举例系统面临大量文件读写影响服务器磁盘IO导致数据库查询高延迟初级解决方案Redis通过在内存中的高吞吐完......
  • Java 编程问题:四、类型推断
    本章包括21个涉及JEP286或Java局部变量类型推断(LVTI)的问题,也称为var类型。这些问题经过精心设计,以揭示最佳实践和使用var时所涉及的常见错误。到本章结束时,您将了解到将var推向生产所需的所有知识。问题使用以下问题来测试您的类型推断编程能力。我强烈建议您在使用解决方案......
  • Java 编程问题:一、字符串、数字和数学
    本章包括39个涉及字符串、数字和数学运算的问题。我们将从研究字符串的一系列经典问题开始,例如计算重复项、反转字符串和删除空格。然后,我们将研究专门用于数字和数学运算的问题,例如两个大数求和和和运算溢出,比较两个无符号数,以及计算除法和模的下限。每个问题都要经过几个解决方......
  • ubuntu 中 解决vim编辑器注释行后面不清晰的问题
     001、修改配置前 002、修改vim配置文件,/etc/vim/vimrc找到 setbackground=dark行,将前面的注释引号去掉 003、查看修改效果 ......
  • wsl2中docker启动不了的问题解决方法
    在wsl2的ubuntu系统中安装docker后,sudoservicedockerstart一直启动不起来在网上找到了解决方案https://juejin.cn/post/7197594278083919932解决方法这个错误提示通常是因为系统中使用的是经过修改的nftables,而Docker安装程序使用iptables进行NAT。为了解决这个问......
  • win10在访问共享的时候出现问题,异常代码为0x80004005的解决方案
    在使用win10访问网上邻居的共享时候,意外跳出异常:0x80004005,同时无法访问网上邻居的电脑。百度网上的解决方案,大都是搞什么注册dll的操作,如regsvr32softpub.dll,regsvr32wintrust.dll之类后来又找到网上的这个修改注册表的操作,说是应对访问共享时候遇到该代码的方案,尝试后问题......
  • 解决vue2.0路由 TypeError: Cannot read property 'matched' of undefined 的错误问题
      找了很久这个问题 解决vue2.0路由TypeError:Cannotreadproperty'matched'ofundefined的错误问题-北桥苏-博客园(cnblogs.com)  解决办法改为   问题解决  没有找到为什么 好像高版本的router没有这个问题 我因为需要降级到了3.1.3 ......
  • 记录一次艰难的云服务器部署前后端项目springBoot+mybatis和vue(两天解决的前后端跨域
    前言大家好我是歌谣今天继续给大家带来后端java的学习最近刚学习完java的一个增删改查紧接着就是部署项目了代码准备工作前端:vue后端:springboot+mybatis数据库mysql部署后端项目打包找到maven-package-runmavenbuild云服务器上面建立文件mkdir/www/springBoot创建文件......
  • 个人所得税问题
    1.问题描述:  编写一个计算个人所得税的程序,要求输入收入金额后能够输出应缴的个人所得税。个人所得税的征收办法如下2.思路  1.建立结构体其中包含start(起始税费),end(阶段最大税费),taxrate(税率);  2.写出计算函数tax+=(p->end-p->start)*p->taxrate;(当个人所......
  • 5兔子产子
    #include<iostream>usingnamespacestd;intmain(){ inta,b,c,i,couts=0; a=1,b=1; cout<<a<<endl<<a<<endl; for(i=3;i<=30;i++){ c=a+b; cout<<c<<endl; a=b; b=c; couts++; } cout<<couts; return0;}......