この質問に答えた後、楽しみのために次のC#コードをまとめました。
public static IEnumerable<int> FibonacciTo(int max)
{
int m1 = 0;
int m2 = 1;
int r = 1;
while (r <= max)
{
yield return r;
r = m1 + m2;
m1 = m2;
m2 = r;
}
}
foreach (int i in FibonacciTo(56).Where(n => n >= 24) )
{
Console.WriteLine(i);
}
max
問題は、関数にパラメーターを渡す必要がないことです。現在、これを使用しない場合、コードは正しいデータを出力しますが、IEnumerableが引き続き機能するため、ハングしているように見えます。このように使用できるようにするには、どうすればよいですか。
foreach (int i in Fibonacci().Where(n => n >= 24 && n <= 56) )
{
Console.WriteLine(i);
}