应用斐波那契,处理大数字
Applying Fibonacci, working with large numbers
我正努力在Rosalind页面上成功完成这项挑战。挑战在于:
给定:正整数
n≤40
和k≤5
。返回:
n
个月后将出现的兔对总数,如果我们从1对开始,并且在每一代中,每对繁殖年龄的兔子产生一窝k
兔对(而不是只有1对)。
练习给出了一个包含两个数字的文本文件,即上面提到的n
和k
。
我的代码试图实现Fibonacci,在较低的月份数下可以正常工作。然而,随着月份的增加,结果开始变得非常大,在每种情况下,我的答案都是Infinity
。
我的公式用错了吗?还是Javascript是一个糟糕的语言选择,用于这样的练习?
我的代码:
function fibonacciRabbits(months, pairs){
var months = months;
var numberOfPairs = pairs;
var result = 0;
// Declare parent & child arrays with constants
var parentArr = [1, numberOfPairs + 1]
var childArr = [numberOfPairs, numberOfPairs]
var total = []
// Loop from the point after constants set above
for(var i = 2; i < months - 2 ; i++){
parentArr.push(parentArr[i-1] + childArr[i-1])
childArr.push(parentArr[i-1] * childArr[i-2])
total.push(parentArr[i-1] + childArr[i-1])
}
result = childArr[childArr.length - 1] + parentArr[parentArr.length - 1]
console.log(months + ' months and ' + numberOfPairs + ' pairs:'n')
console.log('parentArr:'n', parentArr)
console.log('childArr:'n', childArr)
console.log('total'n', total)
console.log('result:', result)
console.log(''n'n'n')
}
fibonacciRabbits(5, 3)
fibonacciRabbits(11, 3)
fibonacciRabbits(21, 3)
fibonacciRabbits(31, 2)
这是一个REPL
这里有一个更简单的解决方案,它不会产生如此大的数字,并且在Javascript中处理最大情况而不会达到无穷大。我认为你的解决方案太大太快了。
function fibonacciRabbits(months, reproAmount){
var existingAdults = 0;
var adultPairs = 0;
var childPairs = 1;
for(var i = 2; i <= months; i++){
adultPairs = childPairs; //children mature
childPairs = (existingAdults * reproAmount); //last month's adults reproduce
existingAdults += adultPairs; //new adults added to the reproduction pool
}
console.log(existingAdults + childPairs);
}
为了确保你走在正确的轨道上,用测试你的功能
fibonacciRabbits(1, 1);
fibonacciRabbits(2, 1);
网站上说:f(1)=f(2)=1。所以不管怎样,这两个都应该产生"1"。您的代码会为这两种情况生成"3"。
相关文章:
- 我怎样才能以非阻塞的方式处理数字
- 如何使用if语句jquery对数字进行动画处理
- 文本框中的数字需要处理
- 如何处理 jQuery 中的数字输入更改
- 如何在JavaScript上处理金融应用程序的数字,它缺少整数类型
- 当 ng 模型输入为数字时,处理它
- 修改地板/天花板功能以处理 1 以外的数字
- 通过 AngularJS 处理 Firefox 中的数字输入
- 如何在Javascript中处理大于2^53的数字
- 以何种格式记录/存储数字数据以供进一步的JavaScript处理
- 应用斐波那契,处理大数字
- Javascript缩小和模糊处理更改了代码中的数字
- 使用数字id javascript处理html输入元素
- AngularJS处理格式化的数字输入
- 在javascript中处理字符串、数字或两者时应该使用什么排序算法
- Javascript数字比较操作符是如何处理字符串的
- 数字信号处理例程中的Node.js
- 使用AngularJS'处理64位数字;美元http.get()
- 报告服务-SSRS中的Javascript没有正确处理数字符号
- 如果我是一个虚拟机,在执行JavaScript时我会如何处理数字