当前位置:网站首页>Kotlin Algorithm Getting Started with Rabbit Number Optimization and Expansion
Kotlin Algorithm Getting Started with Rabbit Number Optimization and Expansion
2022-08-11 08:13:00 【Yi Pangzhou】
/* 古典问题:3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 分析:首先我们要明白题目的意思指的是每个月的兔子总对数;假设将兔子分为小中大三种,兔子从出生后三个月后每个月就会生出一对兔子, 那么我们假定第一个月的兔子为小兔子,第二个月为中兔子,第三个月之后就为大兔子,那么第一个月分别有1、0、0,第二个月分别为0、1、0, 第三个月分别为1、0、1,第四个月分别为,1、1、1,第五个月分别为2、1、2,第六个月分别为3、2、3,第七个月分别为5、3、5…… 兔子总数分别为:1、1、2、3、5、8、13…… 于是得出了一个规律,从第三个月起,后面的兔子总数都等于前面两个月的兔子总数之和,即为斐波那契数列.*/ class RabbitNumber { private var rabbits: Long = 1 private var lastSecondRabbits: Long = 0 private var lastRabbits: Long = 0 /** * Traverse from the first month to the firstn个月的兔子总数 */ fun forEachMothsToRabbits(moths: Int) { println(System.currentTimeMillis()) for (i in 1..moths) println("第" + i + "个月兔子数为" + getRabbits(i)) println(System.currentTimeMillis()) } /** * Get the total number of rabbits for the current month */ private fun getRabbits(moths: Int): Long { if (moths == 1 || moths == 2) return rabbits = 1 else if (moths == 3) return rabbits = 2 else { //Initialize the number of rabbits in the last month and the last two months if (lastRabbits == 0L && lastSecondRabbits == 0L) { lastSecondRabbits = getRabbits(moths - 2) lastRabbits = getRabbits(moths - 1) } //Count the number of rabbits returned by this one rabbits = lastRabbits + lastSecondRabbits /*Let the number of rabbits in two months equal the number of rabbits in the previous month,Let last month equal the number of rabbits in this month 为了下一次计算(Number of rabbits next month)More efficient and faster to avoid redundant recursion affecting the calculation speed*/ lastSecondRabbits = lastRabbits lastRabbits = rabbits return rabbits } } }
边栏推荐
- 美术2.4 UV原理基础
- Active users of mobile banking grew rapidly in June, hitting a half-year high
- 分门别类输入输出,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang基本数据类型和输入输出EP03
- 2.1 - Gradient Descent
- TF generates (feature, label) set through feature and label, tf.data.Dataset.from_tensor_slices
- 优炫数据库支持多列分区吗?
- Square, multi-power, square root calculation in Tf
- 【LeetCode】Summary of linked list problems
- 第一次因没有找到iframe元素而怀疑selenium4是不是有bug?
- 用 Antlr 重构脚本解释器
猜你喜欢
查找最新人员工资和上上次人员工资的变动情况
JUC并发编程
研发了 5 年的时序数据库,到底要解决什么问题?
The most complete documentation on Excel's implementation of grouped summation
Conditional statements in TF; where()
4.1 - Support Vector Machines
如何通过开源数据库管理工具 DBeaver 连接 TDengine
leetcode: 69. Square root of x
一根网线两台电脑传输文件
Write a resume like this, easy to get the interviewer
随机推荐
记录一些遇见的bug——Lombok和Mapstruct的冲突导致,A component required a bean of type ‘com.XXX.controller.converter.
Find the latest staff salary and the last staff salary changes
About # SQL problem: how to set the following data by commas into multiple lines, in the form of column display
magical_spider远程采集方案
2022年值得关注的NFT发展趋势
1071 Small Gamble (15 points)
The most complete documentation on Excel's implementation of grouped summation
零基础SQL教程: 基础查询 05
One-hot in TF
3.1-Classification-probabilistic generative model
几何EX3 功夫牛宣布停售,入门级纯电产品为何总成弃子
机器学习(一)数据的预处理
Kaldi语音识别工具编译问题记录(踩坑记录)
oracle数据库中列转行,列会有变化
Unity3D——自定义类的Inspector面板的修改
Creo9.0 特征的成组
美术2.4 UV原理基础
Active users of mobile banking grew rapidly in June, hitting a half-year high
剑指offer专项突击版第26天
Break pad source code compilation--refer to the summary of the big blogger