筆記一:遞迴

來源:互聯網
上載者:User

標籤:遞迴演算法

一開始講了演算法的空間複雜度和時間複雜度的分析,其怎麼由來的,一步步的分析演變,以前看過《演算法之道》,這個還有點熟悉,就是具體的例子的時間複雜度的分析不怎麼

會,應多加練習,畢竟

這是很基礎的東西~

然後就是遞迴和分治~ 今晚只夠時間講遞迴~

其實,都看過遞迴~以前剛剛開始接觸的時候覺得很容易,慢慢的就很難了,就是實現代碼的時候碰到了思維障礙,過不去,大二時就學過遞迴~很重要的基礎

以前的印象是調用自身,“推卸責任”,數學公式,遞迴圖,經典的Fibonacci數列~

以前就是看或寫遞迴代碼的時候就會遇到思維障礙,這很難說明,但就是要理解其中的一個環節時卡住了,不明白為什麼~

通過今晚的課,我想,也許是我認識理解遞迴演算法的方式錯誤了~應該充分的把握其本質(要拿出來用時最直接接觸的本質)和“不求甚解”~

今晚,老師將了遞迴的空間本質,其實就是一個棧,臨界結束條件在最頂層,最底層的是n的情況,這個就像是個手榴彈一樣,最頂的就是個保險環,我們要寫的代碼就是保險


環(臨界結束條件)和炸藥(遞迴關係,反應鏈)~這個記憶很重要,因為明確了要寫的是什麼,就不會出現思維障礙了~理解起來就順了,要寫怎麼樣的遞迴代碼就一目瞭然了~


寫遞迴代碼,要先推出臨界結束條件和遞迴關係式,然後再去實現代碼!!!要分析遞迴的時間複雜度也是要先寫出遞迴式分析!!!遞迴:重在“歸”和化歸差不多!

比如,Fibonacci數列f[n]=f[n-1]+f[n-2],分析的話,就是T(n)變為兩個T(n)(T(n-1)和T(n-2)都看為T(n)),就是T(n)=2T(n)+O(1),

每個T(n)都變為2T(n),有n個,即是O(2^n)的複雜度~(其中還有一個O(n),忽略不計)~<注意!這裡的兩個字“變為”是很重要的思想!!!>


還有就是講了全排列~很經典~


perm(n)=(變為)rn(perm(n-1))+rn-1(perm(n-1))......r0(perm(n-1))

遞迴演算法,幾乎都是找f(n)和f(n-1)或f(n/2)等等的關係!


我相信其實這些都很簡單,我知道我所理解的方向不對,即是開啟的方式不對罷了,所以才會學演算法這麼慢!!!加油!!!

筆記一:遞迴

聯繫我們

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