回覆列表
  • 1 # 使用者3066025887744

    圖解是什麼意思呀。

    這個演算法 那麼簡單沒必要搞得那麼複雜吧。an = an-1 + 1; 你明白這個等式的意義嗎? 這個等式已經包含了遞迴演算法的全部含義。an 表示 n個數的和,an-1 表示n-1個數的和 ,an = an-1 + 1;表示n個數的和可以透過n-1個數的和來求的。上述說明哪些情況可以使用遞迴呢? 那就是:已知前一個步驟可以求得後一個步驟的結果的情況,並且前一個步驟和後一個步驟是有規律過度的。比如漢諾塔問題: 移n個盤是已移n-1個盤為條件的,兩者的共同點是移盤。所以可以用f(n)表示移n個盤,f(n-1)表示移n-1個盤,那麼移n個盤和移n-1個盤有什麼關係呢? 這就需要預先分析問題才能得出具體的關係 在這個問題中,把n個盤從a移到c需要三個步驟來完成。1.n-1個盤從a移到b 2 1個盤從a移到c 3 n-1個盤從b移到c 已知n-1個盤從a移到b是可行的,為什麼? 因為移1個盤是可行,那麼移2個盤也是可行,移 3個盤是已移2個盤為條件的,所以移3個盤也是可行的,所以移n個 盤是可行的。所以根據已知條件可以解得: 設f(n, a, b,c) 表示 把n個盤從a移到c 藉助b --------------------------這裡很關鍵,這是搞懂遞迴的關鍵關鍵。那麼把n-1個盤從a移到b 藉助c 怎樣表示呢? 很明顯是:f(n-1, a, c,b) 那麼把1個盤從a移到c怎樣表示呢? 很明顯是:f(1, a, b,c) 那麼把n-1個盤從b移到c 藉助a 怎樣表示呢? 很明顯是:f(n-1, b, a,c) 所以f(n, a, b,c) = ( f(n-1, a,c,b) , f(1, a, b,c), f(n-1, b,a,c)) 這和等差等比數列一個原理。沒有什麼 特別的。記住是問題有這樣遞推關係才可以使用這種方法。如果要你計算1+2+8+22 的結果 你就不能使用遞迴。因為該問題的後一步驟與前一步驟不具有規律性,所以已知前一個步驟並不能求的後一個步驟的值 1+2+3+4 ...+ 111111111111111111111111111111 這個問題就可以使用遞迴 原因你懂了吧。至於爬樓梯問題,無限級分類 問題等一些遞迴問題,那不過時小菜一碟。一句話:後一步驟依賴前一步驟並且二者聯絡具有規律性,運用遞迴必然成功。

  • 中秋節和大豐收的關聯?
  • 現在社會上有哪些詞彙或者稱呼最讓人們討厭的?