在高階語言中,呼叫自己和其他函數並沒有本質的不同。
我們把一個直接呼叫自己或是透過一系列的呼叫敘述間接地呼叫自己的函數,稱為遞迴函數。
當然,寫遞迴程式最怕的就是陷入永無止盡的無窮遞迴中,所以每個遞迴定義必須至少有一個條件,滿足時遞迴不再進行,即不再參考本身而是傳回值退出。
反覆運算和遞迴的區別是: 反覆運算使用的是迴圈結構,遞迴使用的是選擇結構。
遞迴能使程式的結構更清晰、更簡潔、更容易讓人了解,進一步減少讀懂程式的時間。
但是大量的遞迴呼叫會建立函數的備份,進而耗費大量的時間和記憶體。
反覆運算則不需要返滬呼叫函數和占用額外的記憶體。
因此我們應該視不同情況選擇不同的程式實現方式。
換句話說,遞迴雖然能讓程式碼更簡潔易懂,但容易消耗大量記憶體與時間,因此必須設好終止條件,並視情況在簡潔的遞迴與高效的迴圈(反覆運算)之間做出取捨。
今日的分享就到這囉,我們明天見,掰掰!