我正在玩弄 LINQ 和相关主题,并且想知道以下内容。
我有两种获取斐波那契数列的方法。我开始:
public static IEnumerable<int> Fibonacci
{
get
{
int i = 0;
int j = 1;
int temp = 0;
while (true)
{
yield return i;
temp = i;
i = j;
j = temp + i;
}
}
}
但这让我开始思考,为什么我会选择这个:
public static IList<int> Fibonacci(long to)
{
IList<int> fibList = new List<int>();
int i = 0;
int j = 1;
int temp, index = 0;
while (index < to)
{
fibList.Add(i);
temp = i;
i = j;
j = temp + i;
index++;
}
return fibList;
}
IList 也是一个 Enumerable + 我可能想为其添加一些参数化。我并不是真的在寻找优化或东西或诸如使用 <long> 之类的东西,因为这个数字很快就会变大,它只是一个简单的例子。只是一些论据赞成和反对每种方法。为什么以及何时应该使用哪种方法?