初步遞迴續

2021-08-29 11:11:49 字數 330 閱讀 2163

我們來分析ff(3)的實現過程

同樣首先執行ff(3)

根據判斷條件執行呼叫ff(n-1)也就是ff(2)然後ff(2)呼叫ff(1);

ff(1)執行 列印1 執行完畢 ,這個時候問題出現了,接下來會做什麼呢?

我們會想到執行ff(2)但是從哪執行呢 是再次重新執行嗎?(這樣肯定不會的否則會陷入無限迴圈中);

實際上在執行方法呼叫時,會把呼叫的資訊存放在乙個執行棧中,這些資訊就包括呼叫點 也就是從哪行開始呼叫,當他出棧時會繼續從此條語句一下執行。

方法執行棧 入棧的順序是 ff(3),ff(2),ff(1),然後出棧

所以列印的結果為123

函式的遞迴(續)

漢諾塔問題 有三根柱子a,b,c a柱子上有n個盤子,把a柱子上的盤子全部移到c柱子上,一次只能移動乙個盤子,大的盤子不能放在小的盤子上面,求最少要移動多少次?分析 需要注意的是,只有把a柱子上 n 1 盤子移到b上,才能把a柱子第n個盤子移到c上.有1個盤子 直接移到c 1次 共 1次 有2個盤子...

遞迴討論(二)續

在討論二中,展示了鋼條分段的方法,只不過解題的方法採用的是自頂而下的策略。個人理解的自頂而下的策略 首先我們不知道乙個大問題的答案,但我們可以將問題規模縮小,外加上已知的一部分。進而變成求解這個小規模問題答案的過程,利用遞迴原理,層層向下,最終回到乙個最簡單的問題。這種處理問題的方式,難免會有重複求...

遞迴的初步認識

簡單介紹我對遞迴的理解,它就是像是我們數學所說的數學歸納法,如在題目中,找到規律,找到重複的規律。有時你會神奇的發現,一行 就可以解決你寫五六行的 如這個求階乘 然後呼叫方法factorial n 這樣就實現了遞迴。這裡說一下大家可以注意這些英文表達,記憶一下,對以後做工業設計非常有用。聽我老師說的...