當前位置:編程學習大全網 - 編程軟體 - 什麽是遞歸表

什麽是遞歸表

是指函數/過程/子程序在運行過程序中直接或間接調用自身而產生的重入現象。

在計算機編程裏,遞歸指的是壹個過程:函數不斷引用自身,直到引用的對象已知。

使用遞歸解決問題,思路清晰,代碼少。但是在主流高級語言中(如C語言、Pascal語言等)使用遞歸算法要耗用更多的棧空間,所以在堆棧尺寸受限制時(如嵌入式系統或者內核態編程),應避免采用。所有的遞歸算法都可以改寫成與之等價的非遞歸算法。

漢諾塔問題,是常見可用遞歸解決的問題,不過也有非遞歸的解法。

菲波納契數列可用遞歸定義。

以下為求漢諾塔問題的Pascal程序:

procedure Hanoi(n:integer;x,y,z:char);

begin

if n<>1 then begin

Hanoi(n-1,x,z,y);

writeln(x,n,z);

Hanoi(n-1,y,x,z);

else writeln(x,n,z);

end;

end;

上述程序用接近自然語言的偽代碼可表述如下:

Hanoi 過程 (整型參數n; 字符型參數 x,y,z);

//註:n 代表本步中要處理的盤子數,x,y,z 分別表示 n 號盤子原來所在柱子、經由柱子、目標柱子

開始

如果 n 不為 1 ,那麽:開始

調用 Hanoi 過程 (參數為 n-1,x,z,y);

//註:這壹步表示用本過程方法將剩余 n-1 個盤子從柱子 x 經由柱子 z 移動到柱子 y

輸出 x,n,z; //註:表示將 n 號盤子從 x 移動到 z

調用 Hanoi 過程 (參數為 n-1,y,x,z);

//註:這壹步表示用本過程方法將剩余 n-1 個盤子從柱子 y 經由柱子 x 移動到柱子 z

結束; //以上程序段就完成了把 n 個盤子從柱子 x 經由柱子 y 移動到柱子 z

否則 輸出 x,n,z; //註:若 n 為1 的話本句直接輸出表示將 n 號盤子從 x 移動到 z

結束;

  • 上一篇:青島萬基萬工具有限公司怎麽樣?
  • 下一篇:微信裏怎麽把人分成abc類?
  • copyright 2024編程學習大全網