亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#實現斐波那契數列的幾種方法整理

2019-10-29 19:59:08
字體:
來源:轉載
供稿:網友

什么是斐波那契數列?經典數學問題之一;斐波那契數列,又稱黃金分割數列,指的是這樣一個數列:1、1、2、3、5、8、13、21、……想必看到這個數列大家很容易的就推算出來后面好幾項的值,那么到底有什么規律,簡單說,就是前兩項的和是第三項的值,用遞歸算法計第50位多少。

這個數列從第3項開始,每一項都等于前兩項之和。

斐波那契數列:{1,1,2,3,5,8,13,21...}

遞歸算法,耗時最長的算法,效率很低。

public static long CalcA(int n){  if (n <= 0) return 0;  if (n <= 2) return 1;  return checked(CalcA(n - 2) + CalcA(n - 1));}

通過循環來實現

public static long CalcB(int n){  if (n <= 0) return 0;  var a = 1L;  var b = 1L;  var result = 1L;  for (var i = 3; i <= n; i++)  {    result = checked(a + b);    a = b;    b = result;  }  return result;}

通過循環的改進寫法

public static long CalcC(int n){  if (n <= 0) return 0;  var a = 1L;  var b = 1L;  for (var i = 3; i <= n; i++)  {    b = checked(a + b);    a = b - a;  }  return b;}

通用公式法

/// <summary>/// F(n)=(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}/// </summary>/// <param name="n"></param>/// <returns></returns>public static long CalcD(int n){  if (n <= 0) return 0;  if (n <= 2) return 1; //加上,可減少運算。  var a = 1 / Math.Sqrt(5);  var b = Math.Pow((1 + Math.Sqrt(5)) / 2, n);  var c = Math.Pow((1 - Math.Sqrt(5)) / 2, n);  return checked((long)(a * (b - c)));}

其他方法

using System;using System.Diagnostics;namespace Fibonacci{  class Program  {    static void Main(string[] args)    {      ulong result;      int number = 10;      Console.WriteLine("************* number={0} *************", number);      Stopwatch watch1 = new Stopwatch();      watch1.Start();      result = F1(number);      watch1.Stop();      Console.WriteLine("F1({0})=" + result + " 耗時:" + watch1.Elapsed, number);      Stopwatch watch2 = new Stopwatch();      watch2.Start();      result = F2(number);      watch2.Stop();      Console.WriteLine("F2({0})=" + result + " 耗時:" + watch2.Elapsed, number);      Stopwatch watch3 = new Stopwatch();      watch3.Start();      result = F3(number);      watch3.Stop();      Console.WriteLine("F3({0})=" + result + " 耗時:" + watch3.Elapsed, number);      Stopwatch watch4 = new Stopwatch();      watch4.Start();      double result4 = F4(number);      watch4.Stop();      Console.WriteLine("F4({0})=" + result4 + " 耗時:" + watch4.Elapsed, number);      Console.WriteLine();      Console.WriteLine("結束");      Console.ReadKey();    }    /// <summary>    /// 迭代法    /// </summary>    /// <param name="number"></param>    /// <returns></returns>    private static ulong F1(int number)    {      if (number == 1 || number == 2)      {        return 1;      }      else      {        return F1(number - 1) + F1(number - 2);      }          }    /// <summary>    /// 直接法    /// </summary>    /// <param name="number"></param>    /// <returns></returns>    private static ulong F2(int number)    {      ulong a = 1, b = 1;      if (number == 1 || number == 2)      {        return 1;      }      else      {        for (int i = 3; i <= number; i++)        {          ulong c = a + b;          b = a;          a = c;        }        return a;      }    }    /// <summary>    /// 矩陣法    /// </summary>    /// <param name="n"></param>    /// <returns></returns>    static ulong F3(int n)    {      ulong[,] a = new ulong[2, 2] { { 1, 1 }, { 1, 0 } };      ulong[,] b = MatirxPower(a, n);      return b[1, 0];    }    #region F3    static ulong[,] MatirxPower(ulong[,] a, int n)    {      if (n == 1) { return a; }      else if (n == 2) { return MatirxMultiplication(a, a); }      else if (n % 2 == 0)      {        ulong[,] temp = MatirxPower(a, n / 2);        return MatirxMultiplication(temp, temp);      }      else      {        ulong[,] temp = MatirxPower(a, n / 2);        return MatirxMultiplication(MatirxMultiplication(temp, temp), a);      }    }    static ulong[,] MatirxMultiplication(ulong[,] a, ulong[,] b)    {      ulong[,] c = new ulong[2, 2];      for (int i = 0; i < 2; i++)      {        for (int j = 0; j < 2; j++)        {          for (int k = 0; k < 2; k++)          {            c[i, j] += a[i, k] * b[k, j];          }        }      }      return c;    }    #endregion    /// <summary>    /// 通項公式法    /// </summary>    /// <param name="n"></param>    /// <returns></returns>    static double F4(int n)    {      double sqrt5 = Math.Sqrt(5);      return (1/sqrt5*(Math.Pow((1+sqrt5)/2,n)-Math.Pow((1-sqrt5)/2,n)));    }  }}

OK,就這些了。用的long類型來存儲結果,當n>92時會內存溢出。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久久久不卡| 一区二区亚洲欧洲国产日韩| 国内精品一区二区三区| 中文字幕久精品免费视频| 欧洲亚洲妇女av| 国产精品扒开腿做爽爽爽视频| 成人羞羞国产免费| 在线观看欧美日韩| 欧美日产国产成人免费图片| 欧美另类极品videosbestfree| 欧美午夜激情小视频| 精品日韩视频在线观看| 国产成人黄色av| 日韩av在线电影网| 国产一区二区激情| 亚洲字幕一区二区| 91中文字幕在线| 国产亚洲欧洲黄色| 久久久97精品| 日韩精品一二三四区| 色香阁99久久精品久久久| 久久成人在线视频| 精品国产拍在线观看| 91社区国产高清| 欧美性猛交xxxx免费看漫画| 久久天天躁日日躁| 欧美视频在线观看 亚洲欧| 久久中文字幕在线视频| 欧美精品情趣视频| 一区二区三区视频免费| 亚洲色图av在线| 亚洲人成电影网站色| 国产精品白嫩美女在线观看| 亚洲国产另类久久精品| 久久精品中文字幕电影| 一区二区三区四区在线观看视频| 最新69国产成人精品视频免费| 午夜精品福利视频| 91国产在线精品| 欧美日韩在线观看视频小说| 日韩中文字幕网| 免费av在线一区| 操日韩av在线电影| 亚洲欧美中文字幕在线一区| 亚洲国产精品女人久久久| 欧美视频国产精品| 欧美精品一区二区免费| 亚洲国产精品久久久| 精品久久久久人成| 在线日韩精品视频| 国产亚洲美女久久| 日韩在线视频导航| 性欧美xxxx| 欧美极品美女视频网站在线观看免费| 国产aaa精品| 在线日韩日本国产亚洲| 亚洲男人天堂久| 国产一区二区三区视频免费| 日韩欧美在线网址| 欧美在线视频免费观看| 欧洲美女免费图片一区| 国内精品美女av在线播放| zzijzzij亚洲日本成熟少妇| 国产精品99久久久久久久久| 亚洲成年人在线播放| 国产精品99久久99久久久二8| 91国自产精品中文字幕亚洲| 91天堂在线视频| 日本一区二区不卡| 亚洲a在线播放| 国产精品视频一区二区三区四| 在线日韩欧美视频| 久久久久九九九九| 久久久精品影院| 亚洲一区二区三区四区在线播放| 亚洲自拍偷拍在线| 国产ts人妖一区二区三区| 国产欧美精品日韩| 欧美理论片在线观看| 亚洲美女喷白浆| 精品国产999| 欧美在线激情网| 亚洲国产成人精品久久| 国产精品r级在线| 欧美精品videossex性护士| 亚洲精品第一国产综合精品| 国产精品入口福利| 成人免费自拍视频| 久久久久久久久久久亚洲| 国产日本欧美一区| 久久久国产一区二区三区| 亚洲直播在线一区| 麻豆国产va免费精品高清在线| 久久精品在线播放| 66m—66摸成人免费视频| 久久久中精品2020中文| 欧美成人午夜影院| 国产日韩在线看片| 欧美日韩在线视频首页| 精品中文字幕在线| 久久99精品国产99久久6尤物| 久久久国产精彩视频美女艺术照福利| 久久亚洲精品中文字幕冲田杏梨| 精品久久久久久电影| 91热精品视频| 国产一区二区动漫| 欧美一级bbbbb性bbbb喷潮片| 国产精品视频午夜| 国产97在线视频| 亚洲精品理论电影| 欧美床上激情在线观看| 亚洲欧美一区二区精品久久久| 91麻豆国产语对白在线观看| 日韩精品免费视频| 国产精品久久久久久久久久东京| 成人欧美在线视频| 亚洲综合第一页| 欧美性videos高清精品| 这里只有精品视频| www.日韩免费| 国产精品影片在线观看| 欧美在线影院在线视频| 91九色国产视频| 亚洲欧美成人网| 国产精品国产三级国产aⅴ9色| 九九热精品在线| 亚洲欧洲xxxx| 欧美日韩成人在线播放| 国产精品一二三视频| 国内精品久久久久久中文字幕| 久久久久久久久久久av| 欧美裸体xxxx极品少妇| 97精品国产97久久久久久免费| 欧美亚洲另类制服自拍| 日韩欧美成人精品| 成人久久久久爱| 亚洲精品日韩激情在线电影| 国产精品www| 欧美在线观看日本一区| 亚洲一区二区精品| 欧美另类极品videosbest最新版本| 午夜精品在线视频| 亚洲欧美国产精品| 欧美激情videoshd| 91精品国产91久久久| 欧美在线影院在线视频| 亚洲日本欧美日韩高观看| 欧美精品做受xxx性少妇| 日韩在线播放一区| 久久久久久久国产精品视频| 中文字幕在线看视频国产欧美在线看完整| 欧美日韩国产成人高清视频| 黄色一区二区三区| 国产91ⅴ在线精品免费观看| 国产欧美一区二区白浆黑人| 欧美亚洲视频在线观看| 欧美一二三视频| 永久555www成人免费| 国产精品午夜国产小视频| 欧美一区二区三区精品电影| 欧美大片大片在线播放| 自拍偷拍亚洲欧美| 欧美日韩国产中文字幕| 亚洲视频欧美视频|