趣味算法——遞歸

趣味算法——遞歸

趣味算法——遞歸

但是手提箱上有一把很大的鎖,小N問奶奶怎麼才能打開箱子?奶奶給了小N一個大盒子,告訴小N,鑰匙就在盒子裡

趣味算法——遞歸

小N奶奶給的這個盒子,是大盒子套裝一堆小盒子,每個小盒子裡面還有盒子。而盒子裡面還有盒子。鑰匙就在某個盒子裡面。為了找到鑰匙,小N該用哪種算法呢?

小A是小N的小夥伴,他來給小N提供了一種算法:

趣味算法——遞歸

趣味算法——遞歸

普通方法使用的是while循環:只要盒子堆不空,就從中 取一個盒子,並在其中仔細查找。

趣味算法——遞歸

小N是個“懶”孩子,哭著說“不要,不要!”

趣味算法——遞歸

趣味算法——遞歸

第二種方法使用遞歸——函數調用自己,這種方法的偽代碼如下

趣味算法——遞歸

這兩種方法的作用相同,但從小A看來,第二種方法更清晰。遞歸只是讓解決方案更清晰,並 沒有性能上的優勢。實際上,在有些情況下,使用循環的性能更好。

如果使用循環,程序的性能可能更高;如果使用遞歸,程序可能更容易理解。如何選擇要看什麼對你來說更重要。

——Leigh Caldwell


分享到:


相關文章: