python中求斐波那契数偶数和_[译] 斐波那契数列中的偶数 (Python vs. JavaScript)

本文介绍了如何用Python和JavaScript生成斐波那契数列中的偶数并求和。通过循环和条件判断,分别展示了两种语言的实现方式,最终计算4,000,000以下斐波那契偶数的总和。" 97914608,8711109,jQuery fullpage 实现回到顶部功能,"['前端开发', 'jQuery', 'fullpage', '交互设计', '页面滚动']
摘要由CSDN通过智能技术生成

斐波那契数列中的偶数 (Python vs. JavaScript)

2d37e0cfe3938b4e72cba445177a303d.png

对于雇主来说,用某种方式来生成斐波那契数列是一道热门的面试题。而求斐波那契数列中的所有偶数便是其热门的变体之一。这里,我将用 Python 和 JavaScript 两种方式来实现。为了让事情变得更加简单,我们将只生成 4,000,000 以下的序列中的偶数,并且对他们进行求和。

什么是斐波那契数列?

在斐波那契数列中每一个新项都等于前两项之和。所以,我们就能看到这样一个例子,从 1 和 2 开始,序列中的前 10 个数字便是:

1, 2, 3, 5, 8, 13, 21, 34, 55, 89

我们将如何生成序列中的所有数字呢?

首先,我们可以通过类似下面这种方式来思考如何生成数列:

0cd9b60e51a6756ba13b54acf590b50b.png

这里的问题是我们没办法为每个数字都创建一个变量,所以更好的解决方案是,每当我们调用完 a + b = c 之后,我们将对这三个变量重新赋值。所以现在我们将上一个 b 的值赋给 a,将上一个 c 的值赋给 b,以此类推。它看起来会像是这样:

adb57db3573dfeb7f0f7321b5d39a05d.png

所以初步的想法是,在某个循环里,我们要检查并确保不要触发 4,000,000 这个临界点,然后我们重置 a、b 和 c 的值,紧接着将 c 存入到数组或列表中。最后我们将对这个数组或列表进行求和。

伪代码的讨论到此为止,接下来我们将展示一些实例代码,让我们看看将会是什么样子:

Python:

让我们像伪代码那样开始。我将空数组赋值给变量 'x'。

x = []

a = 1

b = 2

c = a + b

复制代码

接下来,我将使用 Python 的 while 循环来检查并确保 c 的值小于 4000000。

while c < 4000000:

a = b

b = c

c = a + b

if c % 2 == 0:

x.insert(0, c)

复制代码

因为我们只需要偶数,所以在 while 循环内部,我们将检查并确保它是一个偶数,才会执行插入到 x. 的操作。接下来,我们会在 Python 中对这个列表里的数字进行求和并打印这个值。

numSum = (sum(x))

print numSum

复制代码

JavaScript:

我想用 JavaScript 的方式去解决,但它跟 Python 相比会有些许差异。首先我将创建一个空数组,然后对数组的前两个索引赋值:

var fib = [];

fib[0] = 1;

fib[1] = 2;

复制代码

接着,我将循环数组。选择我需要的索引来生成斐波那契数列。在上一个例子里,每一次循环我们都会重置 a、b 和 c 的值。但在这个版本里,我们将不会重置任何一个值,取而代之的是,我会把 f[i-2] + f[i-1] 的值赋值给 f[i],然后把 f[i] 的值存入到数组中。

for(i=2; i<=50; i++) {

fib[i] = fib[i-2] + fib[i-1];

fib.push(fib[i]);

}

复制代码

至此,我拥有一个完整的斐波那契数列,却不是仅有偶数的序列,所以我将用第二个循环来获取少于 4,000,000 并且里面都是偶数的数组。

arrUnder4mil = [];

for (var i = 0; i < fib.length; i++) {

if (fib[i] <= 4000000 && fib[i] %2 == 0) {

arrUnder4mil.push(fib[i]);

}

}

复制代码

最后,我将对数组里面数字进行求和,并打印这个结果。

let fibSum = arrUnder4mil.reduce((a, b) => a + b, 0);

console.log(fibSum);

复制代码

总结:

尽管我们的 JavaScript 代码有点多,但这两种方法都能在几毫秒内解决这个问题。我认为,对于这些技术面试,通过两种不同的方式或语言能过帮助雇主发现你的全面性和创造性。但最重要的是,它展示了你的逻辑思维能力。如果有任何反馈,请联系我。谢谢!

掘金翻译计划 是一个翻译优质互联网技术文章的社区,文章来源为 掘金 上的英文分享文章。内容覆盖 Android、iOS、前端、后端、区块链、产品、设计、人工智能等领域,想要查看更多优质译文请持续关注 掘金翻译计划、官方微博、知乎专栏。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值