但是手提箱上有一把很大的鎖,小N問奶奶怎麼才能打開箱子?奶奶給了小N一個大盒子,告訴小N,鑰匙就在盒子裡
小N奶奶給的這個盒子,是大盒子套裝一堆小盒子,每個小盒子裡面還有盒子。而盒子裡面還有盒子。鑰匙就在某個盒子裡面。為了找到鑰匙,小N該用哪種算法呢?
小A是小N的小夥伴,他來給小N提供了一種算法:
普通方法使用的是while循環:只要盒子堆不空,就從中 取一個盒子,並在其中仔細查找。
小N是個“懶”孩子,哭著說“不要,不要!”
第二種方法使用遞歸——函數調用自己,這種方法的偽代碼如下
這兩種方法的作用相同,但從小A看來,第二種方法更清晰。遞歸只是讓解決方案更清晰,並 沒有性能上的優勢。實際上,在有些情況下,使用循環的性能更好。
如果使用循環,程序的性能可能更高;如果使用遞歸,程序可能更容易理解。如何選擇要看什麼對你來說更重要。
——Leigh Caldwell