无限生成器有哪些巧妙的用途?我见过很多看似微不足道的例子,比如“列出所有偶数”,但我认为肯定还有其他更适用于现实世界场景的例子。具体示例(使用任何支持生成器的语言)表示赞赏!
我将给出一个简单的示例作为答案。
无限生成器有哪些巧妙的用途?我见过很多看似微不足道的例子,比如“列出所有偶数”,但我认为肯定还有其他更适用于现实世界场景的例子。具体示例(使用任何支持生成器的语言)表示赞赏!
我将给出一个简单的示例作为答案。
随机生成器可能被认为是聪明的使用。
查看http://rosettacode.org/wiki/Hamming_numbers#Haskell上的 Haskell 代码;它以创造性的方式使用惰性列表(有点像生成器)来列出所有汉明数。
简单的例子:一次产生一个斐波那契数(没有溢出检查,在 C# 中):
public static IEnumerable<double> Fibonacci()
{
double n_minus2 = 1;
double n_minus1 = 1;
yield return n_minus2;
yield return n_minus1;
while(true)
{
double n = n_minus2 + n_minus1;
yield return n;
n_minus2 = n_minus1;
n_minus1 = n;
}
}