![]() |
1
2
循环条件错误,应该是这样的:
|
![]() |
2
25
您的代码有几个问题:
大多数人在开始学习Python时只学习命令式编程。这并不奇怪,因为Python是一种命令式语言。但是Python在某种程度上也支持函数式编程,在我看来,函数式编程方法对这类练习更具启发性。
为了使用这个生成器,我们可以从itertools导入一些有用的函数。要打印前几个数字,请使用 islice :
1 1 2 3 5 ifilter 生产新发电机:
2 8 34 144 610 从生成器获取数字,直到一个数字超过四百万 takewhile :
要解决这个问题,可以使用sum:
我希望这表明函数式编程方法并不困难,而且是解决某些类型问题的更优雅的方法。 |
![]() |
3
3
你确定是吗
|
![]() |
4
3
The On-Line Encyclopedia of Integer Sequences! 您可以按名称或顺序搜索信息。
|
![]() |
5
2
但这不是任务。你必须把所有小于400万的偶数斐波那契数相加。 |
![]() |
6
2
这里有一个替代方法(非常快,但未经测试)。 它依赖于几个属性:
比它小。
33可以被3整除,所以它是一个偶数斐波那契数,如果不是,我们需要这样调整n。
到目前为止所有斐波那契数的和,如果由
所有偶数之和是这个数的一半:
好的一点是,它是一个O(1)(或者O(log(N)),如果你包括pow/log的开销)算法,并且适用于double。。所以我们可以计算非常大的值的和。 |
![]() |
7
0
|
![]() |
8
0
还有其他一些技巧使这比简单地计算Fibonacci数的完整列表,然后对列表中的偶数求和更有效。
当然,所有这些都会占用您自己的时间,而不是简单地编写暴力解决方案,但是Project Euler只需要找到漂亮的解决方案,而不是暴力解决方案。最后,如果你学会了一些数学和计算的知识,那么你就有了收获。 |
![]() |
9
0
|
![]() |
10
0
算了吧,计算斐波那契数列的最佳方法是使用两个技巧: 对不起,刚才的错误 1:
是右上角的元素。 2: 你可以用 http://en.wikipedia.org/wiki/Exponentiation_by_squaring ,因为矩阵乘法是一个环。 所以你可以用O(logn)来解决我们的问题 |
![]() |
Juan Lozano · r中日期的seq函数工作不正常 2 年前 |
|
user9455316 · 从R中的具体分布减少数字生成器的序列 7 年前 |
![]() |
Ast · 在sql oracle中填写序号 7 年前 |
![]() |
Jaap Baanders · 统计子组中缺少的实例 7 年前 |
![]() |
Andy · 基于文件的HSQLDB不跟踪序列上的调用下一个值 7 年前 |
![]() |
Ruby Learner · Ruby-比较数组中的特定值/目标值 7 年前 |
![]() |
Ricardo Castro · SQL Server:按序列号聚合 7 年前 |