//昨天面试 费纳波切数列取指定位数的值 问我为啥不用递归 这玩意用的着那么复杂吗?
static void 就不用递归(int index) {
int ic = 0;//存上一个结果
int id = 1;//存上上个结果
int ie = 0;//存这个结果
int iN= 1;
while (iN < index) {
ie = ic + id;
ic = id;
id = ie;
iN++;
Console.WriteLine($"上一位数字{ic}--上上一位数字{id}--当前数字{ie}");
}
}
看c#7核心技术指南之后又找到了一个其他写法的实现方式 本质差不多 用法更高端点
static IEnumerable<int> 迭代器实现费纳波切数列(int fibCount) {
for (int i = 0,prevFid=1,curFib=1; i < fibCount; i++)
{
yield return prevFid;
int newFib = prevFid + curFib;
prevFid = curFib;
curFib = newFib;
}
}
///调用方法
foreach (var item in 迭代器实现费纳波切数列(10))
{
Console.WriteLine(item);
}