如何寫遞迴函式

來源:互聯網
上載者:User

遞迴函式,是指某一函數內部自己直接或間接地調用自己,即直接遞迴和間接遞迴。是語言中比較進階的技術用法。

遞迴函式之所以難,是因為是一種過於抽象化的技術,寫代碼的時候無法直觀的看出邏輯是否符合自己要求,因此想一次性寫好遞迴函式,是一件很困難的事情,必須要程式運作起來執行遞迴函式的代碼才能看出是否正確,而且進行測試的難度也很高,有時的隱含bug可能要軟體上線後才會漸漸體現出來。

筆者寫過幾次較為複雜的遞迴函式,總結出了一些寫遞迴函式的技巧和方法,這裡特地拿出來給大家分享,如果各位還有更好的想法,歡迎多加指點。

首先,要分析清楚滿足遞迴的條件,並一一列出

這點十分重要,它是執行遞迴函式的前提,你寫之前就一定要想清楚什麼時候(條件)這個函數會自己調自己,為了防止疏漏條件,最好把所有滿足遞迴的條件都列在紙上或者文檔上,一定要儘可能的全面。因為我們經常容易漏掉某一種滿足條件,那麼結果自然就會不正確。

其次,要分析不滿足條件時的處理方式

在列出了所有條件後,我們自然還要考慮不滿足條件後的結果,一種是業務本身要求的不滿足條件後的處理,另一種就是出現錯誤時候的處理。說的簡單點,就是正確的情景考慮到了後還要考慮錯誤的情景。

接下來,要分析遞迴函式的傳回值

如果遞迴函式有傳回值,那麼每執行完一次遞迴函式後,上一遞迴函式如何接收、處理該遞迴函式的傳回值。

最後,寫完遞迴函式後一定要進行單元測試,測試也要有方法

因此難以保障一次寫完後正確性,所以寫完後一定要測試,遞迴函式本身測試也很麻煩,遞迴次數少倒還好,遞迴次數一旦多的話就很頭疼。這時我們可以將迴圈的次數,以及遞迴的後的結果列印出來,看看列印後的結果是否符合自己的預期,如果某一遞迴出現問題,可以根據迴圈次數的記錄在調試的時候直接定位,這樣效率會高很多,也容易很多,要不然一步步調試看,實在是折磨人。測試的時候一定要涉及到所有滿足遞迴的條件,每一條件分支都要檢查一遍,這樣才是較為全面的測試遞迴的方法。

寫遞迴函式,不是一下兩下能搞定的事情,本身就是一個反覆性工作,編寫→測試→編寫→測試→...,所以在分析、編寫的時候一定要靜心、細心,不要急躁,這樣漸漸的遞迴函式也就健全起來。頭幾次寫遞迴函式可能寫不好,日後多多練習便會慢慢深刻體會到遞迴的精髓。

那麼我想說的也說完了,希望這篇文章能對大家有協助。

聯繫我們

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