无限生成器有什么聪明用途?我看过很多看起来很琐碎的例子,如“列出所有偶数”,但我认为必须有其他人对现实世界的场景更具适用性。具体的例子(支持生成器的任何语言)赞赏!什么是一些有用或有趣的无限生成器?
我会给一个简单的样本作为答案。
无限生成器有什么聪明用途?我看过很多看起来很琐碎的例子,如“列出所有偶数”,但我认为必须有其他人对现实世界的场景更具适用性。具体的例子(支持生成器的任何语言)赞赏!什么是一些有用或有趣的无限生成器?
我会给一个简单的样本作为答案。
查看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;
}
}
OP要求发电机“对现实世界的情景具有更大的适用性”。 – delnan 2011-02-09 20:12:10
@delnan - 我是OP,这就是我说我会举例说明的例子。 – 2011-02-09 20:14:52
甲随机发生器可能被认为是巧妙地利用。
stackoverflow.com的所有无主题问题的列表。 – bmargulies 2011-02-09 20:03:57