我在Project Euler中遇到了这个问题.
这是问题的问题:
Fibonacci序列中的每个新术语都是通过添加前两个术语生成的.从1和2开始,前10个项将是:1,2,3,5,8,13,21,34,55,89,......查找序列中所有偶数项的总和不超过四百万.
到目前为止我的代码:编辑新代码仍然无法正常工作.
static void Main(string[] args)
{
int a = 1;
int b = 2;
int Container = 0;
int Sum = 0;
while (b < 4000000)
{
if (a % 2 == 0)
{
Container += a;
}
Sum = a + b;
a = b;
b = Sum;
}
Container += b;
Console.WriteLine(Container.ToString());
Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud) 在 JavaScript 中,ES6 风格引入了生成器函数,因此这种构造是可能的:
var fib = function *(max) {
var x = 0, y = 1, tmp = 1;
while (tmp<max) {
yield tmp;
x = y;
y = tmp;
tmp = x + y;
}
}
var fibgen = fib(3000);
Run Code Online (Sandbox Code Playgroud)
这fibgen是一个生成少于 3000 个斐波那契数的生成器。
F# 中的等效构造是什么?