【发布时间】:2011-06-24 09:39:02
【问题描述】:
无限生成器有哪些巧妙的用途?我见过很多看似微不足道的例子,例如“列出所有偶数”,但我认为肯定还有其他更适用于现实场景的例子。具体示例(使用任何支持生成器的语言)表示赞赏!
我将给出一个简单的示例作为答案。
【问题讨论】:
-
stackoverflow.com 的所有离题问题列表。
标签: language-agnostic generator infinite-sequence
无限生成器有哪些巧妙的用途?我见过很多看似微不足道的例子,例如“列出所有偶数”,但我认为肯定还有其他更适用于现实场景的例子。具体示例(使用任何支持生成器的语言)表示赞赏!
我将给出一个简单的示例作为答案。
【问题讨论】:
标签: language-agnostic generator infinite-sequence
简单示例:一次生成一个斐波那契数(在 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;
}
}
【讨论】:
随机生成器可能被认为是聪明的使用。
【讨论】:
查看http://rosettacode.org/wiki/Hamming_numbers#Haskell 上的 Haskell 代码;它以创造性的方式使用惰性列表(有点像生成器)来列出所有汉明数。
【讨论】: