文章目录
- 给一个正整数num,返回小于或等于num的斐波纳契奇数之和。 斐波纳契数列中的前几个数字是 1、1、2、3、5 和 8,随后的每一个数字都是前两个数字之和。 例如,sumFibs(4)应该返回 5,因为斐波纳契数列中所有小于4的奇数是 1、1、3。 提示:此题不能用递归来实现斐波纳契数列。因为当num较大时,内存会溢出,推荐用数组来实现。数组实现斐波那契数列资料。
- 先用数组的方法获取斐波那契数列,然后获取其中符合要求的奇数,之后求和。
- <script type=”text/javascript”> function sumFibs(num) { //使用数组方法得到斐波那契数列 var arr = [1, 1]; if (num >= arr.length) { for (var i = arr.length; i < num; i++) { arr[i] = arr[i – 2] + arr[i – 1]; } } console.log(arr); //获取小于num的奇数 var newarr = arr.filter(function(val) { return val % 2 !== 0 && val <= num; }); console.log(newarr); //获取符合要求的奇数的和 return newarr.reduce(function(cur, next) { return cur + next; }); } sumFibs(4); </script>
给一个正整数num,返回小于或等于num的斐波纳契奇数之和。
斐波纳契数列中的前几个数字是 1、1、2、3、5 和 8,随后的每一个数字都是前两个数字之和。
例如,sumFibs(4)应该返回 5,因为斐波纳契数列中所有小于4的奇数是 1、1、3。
提示:此题不能用递归来实现斐波纳契数列。因为当num较大时,内存会溢出,推荐用数组来实现。数组实现斐波那契数列资料。
先用数组的方法获取斐波那契数列,然后获取其中符合要求的奇数,之后求和。
<script type="text/javascript">
function sumFibs(num) {
//使用数组方法得到斐波那契数列
var arr = [1, 1];
if (num >= arr.length) {
for (var i = arr.length; i < num; i++) {
arr[i] = arr[i - 2] + arr[i - 1];
}
}
console.log(arr);
//获取小于num的奇数
var newarr = arr.filter(function(val) {
return val % 2 !== 0 && val <= num;
});
console.log(newarr);
//获取符合要求的奇数的和
return newarr.reduce(function(cur, next) {
return cur + next;
});
}
sumFibs(4);
</script>
<script type="text/javascript">
function sumFibs(num) {
//使用数组方法得到斐波那契数列
var arr = [1, 1];
if (num >= arr.length) {
for (var i = arr.length; i < num; i++) {
arr[i] = arr[i - 2] + arr[i - 1];
}
}
console.log(arr);
//获取小于num的奇数
var newarr = arr.filter(function(val) {
return val % 2 !== 0 && val <= num;
});
console.log(newarr);
//获取符合要求的奇数的和
return newarr.reduce(function(cur, next) {
return cur + next;
});
}
sumFibs(4);
</script>
发表回复