当前位置: 首页 > news >正文

Java程序之可爱的小兔兔

题目:

        古典问题,有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

程序分析:

        兔子的规律为数列1,1,2,3,5,8,13,21....,即斐波那契数列。斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:

        F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)

算法思路:

        这是一个经典的斐波那契数列问题,要求计算兔子的总数。

        1. 首先,通过Scanner类获取用户输入的整数n,表示要计算前n个月的兔子总数。

        2. 然后,使用for循环遍历从1到n的每一个月份。

        3. 在每个月份中,调用Fib函数来计算当前月份的兔子总数。

        4. Fib函数采用递归的方式实现,当月份小于等于2时,返回1;否则,返回前两个月的兔子总数之和。

        5. 最后,输出每个月的兔子总数。

注意:代码中还提供了一个使用数组实现的Fib函数,但被注释掉了。这个函数的思路是创建一个长度为102400的数组,用于存储斐波那契数列的前102400项。然后,通过循环计算第n项的值,并返回结果。这种方法的时间复杂度为O(n),空间复杂度为O(1)。

源代码:
package Question2;import java.util.Scanner;public class Tutu {public static void main(String[] args) {Scanner scanner=new Scanner(System.in);System.out.print("请输入:");int n=scanner.nextInt();for(int i=1;i<=n;i++){System.out.println("第"+i+"个月兔子总数为:"+Fib(i)+"(对)");}}//递归public static int Fib(int n){if(n<=2){return 1;}else{return Fib(n-1)+Fib(n-2);}}//数组
//    public static int Fib(int n)
//    {
//        int[] arry=new int[102400];
//        arry[1]=1;
//        arry[2]=1;
//        if(n<2)
//        {
//            return arry[1];
//        }
//        else
//        {
//            for (int i = 3; i <= n; i++) {
//                arry[i] = arry[i - 1] + arry[i - 2];
//            }
//            return arry[n];
//        }
//    }}
运行结果:

相关文章:

  • 【初阶数据结构】深入解析栈:探索底层逻辑
  • 计算机网络面试HTTP篇二
  • 北京互联网企业出海服务小程序开发的主要功能
  • ReactNative进阶(二十八)Metro
  • 对称/非对称加密
  • 解决Microsoft Edge浏览器无法使用英文翻译功能
  • 定个小目标之刷LeetCode热题(28)
  • 孕妈妈如何高效备考PMP,纯经验分享
  • Vue核心指令解析:探索MVVM与数据操作之美
  • SpringBoo+vue3+vite整合讯飞星火3.5通过webscoket实现聊天功能(前端代码)附带展示效果
  • Python爬虫-贝壳新房
  • (一)Kafka 安全之使用 SASL 进行身份验证 —— JAAS 配置、SASL 配置
  • 在线随机密码生成工具
  • 制作微信小程序“飞翔的小鸟”
  • 【Redis】如何保证缓存和数据库的一致性
  • Django 博客开发教程 16 - 统计文章阅读量
  • java小心机(3)| 浅析finalize()
  • jquery cookie
  • JS函数式编程 数组部分风格 ES6版
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 前嗅ForeSpider采集配置界面介绍
  • Python 之网络式编程
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • ​业务双活的数据切换思路设计(下)
  • %@ page import=%的用法
  • (C++17) std算法之执行策略 execution
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (四)事件系统
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • ******IT公司面试题汇总+优秀技术博客汇总
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .gitignore文件设置了忽略但不生效
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .NET Core 通过 Ef Core 操作 Mysql
  • .NET HttpWebRequest、WebClient、HttpClient
  • .net MVC中使用angularJs刷新页面数据列表
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .net 提取注释生成API文档 帮助文档
  • .Net6 Api Swagger配置
  • .net6+aspose.words导出word并转pdf
  • .NET中使用Protobuffer 实现序列化和反序列化
  • /boot 内存空间不够
  • /usr/lib/mysql/plugin权限_给数据库增加密码策略遇到的权限问题
  • /var/lib/dpkg/lock 锁定问题
  • @31省区市高考时间表来了,祝考试成功
  • [ C++ ] STL_list 使用及其模拟实现
  • [ Linux Audio 篇 ] 音频开发入门基础知识
  • [2023-年度总结]凡是过往,皆为序章