子程式的遞迴呼叫和重入

2022-04-06 17:37:52 字數 719 閱讀 3084

遞迴呼叫子程式

如果乙個子程式直接呼叫他自己,這種呼叫稱為位元組遞迴呼叫,如果乙個子程式間接呼叫自己,這種呼叫稱為間接遞迴呼叫

遞迴呼叫子程式必須採用暫存器或堆疊傳遞引數,遞迴的深度受到堆疊空間的限制

下面的子程式遞迴呼叫實現求階乘

;子程式說明 fact

;功能,計算n!

;入口引數:(ax) =n

;出口引數:(ax) =n!

;說明採用遞迴演算法實現求階乘,n不能超過8

fact proc

push dx

mov dx,ax

cmp ax,

0jz done

dec ax 求n-1

call fact

mul dx

pop dx

retdone:mov ax,

1因為0的階乘等於1

pop dx

retfact endp

可重入子程式

子程式的可重入是指子程式在中斷後被重新呼叫,子程式的重入不同於子程式的遞迴,衝入是被動行為,而遞迴是主動行為,重入前的呼叫和重入呼叫往往是不相干的,而遞迴呼叫這是密切相關

我們把可以重新進入的子程式稱為可重入子程式,再設計可重入子程式的時候,必須注意以下幾點

不能利用約定的儲存單元傳遞引數

不能使用約定的儲存單元儲存中間值

可重入函式在以後的設計中會提到,這裡只做一般的了解

遞迴下降子程式

遞迴下降子程式 1 實驗目的 實現遞迴下降子程式的功能。2 語言描述 利用函式相互遞迴實現遞迴下降子程式的基礎功能。3 具體實現 include include include include include using namespace std char str 50 輸入要判斷的字串 int ...

COBOL子程式呼叫

內部子程式 identification division.program id.proc a.environment division.data division.procedure division.identification division.program id.proc b.enviro...

COBOL子程式呼叫

內部子程式 identification division.program id.proc a.environment division.data division.procedure division.identification division.program id.proc b.enviro...