C# 遞迴演算法個人見解

來源:互聯網
上載者:User

 ///一列數的規則如下: 1、1、2、3、5、8、13、21、34...... 求第30位元是多少, 用遞迴演算法實現。    
  public static long foo(int i)        {            if (i <= 0)                return 0;            else if (i > 0 && i <= 2)                return 1;            else return foo(i - 1) + foo(i - 2);        }

  從規則不難看出位元與數位關係是:從第3個數開始,每個數是前兩個數的和.

if (i <= 0)   return 0  //預防輸入0或負數,輸入則返回“0”;

 

 else if (i > 0 && i <= 2)    return 1;  //如果輸入第1位或第2位,則返回“1”(如題)

 

else return Foo(i - 1) + Foo(i - 2);”輸入其它的數則返回前兩個數的值。注意:因為求數列中每一個值都是調用該函數,所以求前兩個數的值就又要調用2個這個函數。這就是遞迴(調用自身)。

假設 算第三位的數 那麼foo(3-1)+foo(3-2)  =  foo(2)+foo(1) = 1+1= 2;

 

 

求Foo(30)的值,則返回Foo(29) + Foo(28)的值,其中又要調用Foo(29) 和Foo(28)求它們的值,Foo(29)又要調用Foo(28)和Foo(27),Foo(28)又要調用Foo(27)和Foo(26)……直到調用Foo(2)和Foo(1)會返回“1”,又一層層代回去,最後加出正確答案

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.