这是C#中的一个简单生成器.
IEnumerable<int> Foo()
{
int a = 1, b = 1;
while(true)
{
yield return b;
int temp = a + b;
a = b;
b = temp;
}
}
Run Code Online (Sandbox Code Playgroud)
如何在Digital Mars D中编写类似的发生器?
(问题是关于收益率报表)
谢谢!
更新.那很有意思.由于我只是生成一个数学序列,因此使用递归可能是一个不错的选择.
auto fib = recurrence!("a[n-1] + a[n-2]")(1, 1);
foreach (e; take(fib, 10)) // <- prints first ten numbers from the sequence
{
writeln(e);
}
Run Code Online (Sandbox Code Playgroud)