费纳波切数列之---我就不用递归

 

//昨天面试    费纳波切数列取指定位数的值     问我为啥不用递归    这玩意用的着那么复杂吗?

 

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);
}

 

posted @ 2021-02-24 13:16  郭海朋  阅读(150)  评论(0)    收藏  举报