首先個人理解的遞歸:函數不斷調用自己,直到某個條件下棧中函數有已知結果,然後從棧底返回得到開始函數的結果。
所以解決遞歸問題:1.總結大問題的最小問題的解決方法 2.最小問題的發生條件
以此問題爲例:
設: H(N,A,C) %表示把n個盤子從A藉助B挪到C的解決方法
M(A,B) %表示將A上第一個盤子挪到B
最小問題(有已知的最簡單的解): N = 2的過程:M(A,B) --> M(A,C)-->M(B,C)
普遍問題:H(N,A,C): H(N-1,A,B)-->M(A,C)-->H(N-1,B,C)
推論條件(遞歸結束條件N==1):N=1:H(1,A,B) == M(A,B);
問題解決。