遞迴是一門玄學,通過這幾日觀摩我帥氣組長給我們的資料,我也參悟到了一些東西。。。。
遞迴好比你想知道你現在在**,但現在只知道你的出發點是什麼,且每個地點與地點之間是有聯絡的,所以你得往回走,一直走到出發點,再走回來並記住路途中經過的點,這樣你就知道你原來是在**了
所以我覺得做遞迴的兩大關鍵就是知道這個遞迴的出發點也就是遞迴的基線條件還有變數變化的規律,實質上也是一種迴圈的終止條件和迴圈體,通過重複函式呼叫實現迴圈。
舉兩個比較典型的例子吧!
1.十進位制轉化為二進位制
注意哦這是要把所有的工序做完然後從最底部往上輸出,而且每個被除數都是上面的數除2得來的,終止情況就是當最後除2後的結果為0時,所以遞迴函式**
void tobin(int num)
}輸出在遞迴的後面就是因為要從基線位置輸出!你得都遞迴完了才會到基線吧啊喂
再康康乙個題
2.用遞迴實現逆序輸出整數
這個題迴圈實現的話就是把這個數求餘輸出,剩下的數就是原數除十,剩下的數再求餘輸出,再除十。。。。。一直到剩下個零,除不了十了。遞迴實現的話就是把這個關係遞出來
void reverse(int n)
}那麼這個題怎麼是先輸出再遞迴呢,因為這個題是歸一次就需要輸出相應的值,從頂部往回輸出
總結:遞迴就是一定一定要理清變數變化的關係,找出迴圈所在,也一定要找到基線位置 還要知道是先需要前面的值還是後面的值,調整遞迴部分和其他部分的位置
多多指教!
遞迴排序之我見
最近的一段時間,我參考了別人的部落格寫了不少關於遞迴的排序方法,如全排序,揹包等。在寫這些好程式之後有所感悟趁空寫下,以便日後回顧。其實在陣列的全排序中完全可以使用更加易懂簡便的寫法 for迴圈,但是通過for迴圈編寫陣列全排序需要有乙個先決條件 知道陣列全排序的個數,因為有n個資料全排序就需要寫n...
佈線之我見
前段時間參與了網路實驗室的整個實施過程,有些感想,在此涼涼,一起學習下。在這之前,佈線給我的認識就是 網線連電腦,通了就成!現在看來我真是把機房佈線想的過於簡單了。事實上機房建設是一項集網路技術 裝飾 安全防範 防火 抗乾攏等多學科的綜合系統工程,在實施的過程中,不光要講究能保證業務,更要講究美觀與...
需求之我見
更換手機,前乙個手機花了不少錢,但是用的不爽,介面難看 電池用的快 訊號不好 攝像頭畫素低 掉漆快,任何乙個小小的問題點,都成為了我不再使用這個品牌的理由。低階 花很多錢,還受氣 在親自辦理寬頻的過程中,電信提出了強制打包的其他產品,比如 我只要寬頻,卻推出寬頻 網路電視的 除此之外沒有其他 買不買...