C#演算法之遞推法

來源:互聯網
上載者:User

  1:斐波那契數列演算法,如:1,1,2,3,5,8,13,21…… ,可以看到這裡面的規律吧.就是每一項是前面相鄰兩項之和.求第N項。

       遞迴法:  

1 public static int Fibonacci(int n) { 2                 //參數合法性驗證 3                 if (n < 1)4                     Console.WriteLine("參數必須大於1!");5                 if (n == 1 || n == 2) 6                     return 1;7                 else 8                     return Fibonacci(n - 1) + Fibonacci(n - 2); 9         }     
  非遞迴方式 
 2   public static int fx(int n) {  3                 //參數合法性驗證  4                 if (n < 1)  5                     Console.WriteLine("參數必須大於1!");  6                 //n為1或2時候直接傳回值  7                 if (n == 1 || n == 2) return 1;  8                 //n>2時候迴圈求值  9                 int Nn = 0; 10                 int N1 = 1; 11                 int N2 = 1; 12                 for (int i = 3; i <= n; i++) {13                     Nn = N1 + N2;14                     N1 = N2;15                     N2 = Nn; 16                 }17                 return Nn; 18         } 

    總結:遞迴的代碼簡單些,不過遞迴總體來說是以記憶體換時間,速度快,耗記憶體。

             非遞迴比較省記憶體,速度稍微慢些。    出題:1,5,11,27,65,157,。。。,N。求第N項是多少?斐波那契變式。 

 1 public static int Fibonacci(int n) {  2                 //參數合法性驗證  3                 if (n < 1) 4                     Console.WriteLine("參數必須大於1!"); 5                 if (n == 1) 6                     return 1; 7                 else if (n == 2) 8                     return 5; 9                 else 10                     return Fibonacci(n - 1)*2 + Fibonacci(n - 2); 11         }

  有空大家可以思考其他方式。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.