【演算法資料結構Java實現】遞迴的簡單剖析及時間複雜度計算

來源:互聯網
上載者:User

標籤:遞迴   java   

1.理解            對於遞迴函式的理解,我覺得是比較重要的,因為很多大神能把遞迴函式用的惟妙惟肖,不光是他們的編程功力高深,更主要是能理解這個演算法。比較直白的理解是,如果一個事件的邏輯可以表示成,f(x)=nf(x-1)+o(x)形式,那麼就可以用遞迴的思路來實現。
編寫遞迴邏輯的時候要知道如下法則:1.要有基準  比如說,f(x)=f(x-1)+1,如果不加入基準,f(0)的值是多少,那麼函數會無限執行下去,沒有意義2.不斷推進  也就是f(x)=f(x-1)或是f(x)=f(x/n)之類的                      當然每個遞迴函式會有一個比較神奇的步驟,就是回溯步驟,比方說:      fact(3) ----- fact(2) ----- fact(1) ------ fact(2) -----fact(3)     ------------------------------>  ------------------------------> 
                遞迴                            回溯 

2.執行個體實現
      求 的計算和f(x)=0,首先列出公式f(x)=f(x-1)+x/(4**x)     (兩個**表示次方,python用慣了),得到下面的代碼
public class Recursion {     public static void main(String args[]){         System.out.print(f(2));   }   public static double f(int x){   if (x==0){   return 0;   }   else{   return f(x-1)+x/Math.pow(4,x);   }   }}

結果是:f(2)=0.375,驗證正確

3.時間複雜度計算
        以上題為例,將f(x)=f(x-1)+x/(4**x)展開,

將f(x)乘以4相減,得,設4的x方等於k,則原式時間複雜度,log以4為底。





參考:http://blog.csdn.net/budapest/article/details/6367973

/********************************

* 本文來自部落格  “李博Garvin“

* 轉載請標明出處:http://blog.csdn.net/buptgshengod

******************************************/




【演算法資料結構Java實現】遞迴的簡單剖析及時間複雜度計算

相關文章

聯繫我們

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