遞迴逐級返回

2022-06-18 09:09:10 字數 685 閱讀 7187

def

recursive_test(n):

print('

數字:'

,n)

if n==0:

print('結束'

)

else

: recursive_test(n-1)

print('

number:

',n) #

看這裡 就加了這一句

recursive_test(3)

輸出結果為

數字: 3數字: 2數字: 1數字: 0

結束number: 0

number: 1number: 2number: 3

為什麼是返回下面的遞增數字,這個和呼叫棧相關

呼叫棧最經常被用於存放子程式的返回位址。在呼叫任何子程式時,主程式都必須暫存子程式執行完畢後應該返回到的位址。因此,如果被呼叫的子程式還要呼叫其他的子程式,其自身的返回位址就必須存入呼叫棧,在其自身執行完畢後再行取回。在遞迴程式中,每一層次遞迴都必須在呼叫棧上增加一條位址,因此如果程式出現無限遞迴(或僅僅是過多的遞迴層次),呼叫棧就會產生棧溢位

參考:

理解C語言遞迴函式的逐級返回 return

遞迴函式,也即呼叫自身的函式。c primer plus中有個例子很棒 理解c語言遞迴函式 include void up and down int int main void void up and down int n 該段 中,up and down不斷呼叫自己,輸出如下結果 相信輸出leve...

Activiti逐級審批

動手實現了一下activiti下實現中國特色的逐級審批。public class humanservice else if gonzo equals user else if fozzie equals user else 新建乙個流程,有兩個人工任務 員工提交乙個休假請求,老闆逐級審批。有乙個流程...

linux下逐級建立目錄

功能描述 當目錄不存在時建立目錄,目錄存在時則不做任何操作,可建立多級目錄 s32 create directory const s8 dir path 複製目錄路徑 ret snprintf dir name,sizeof dir name s dir path if 0 ret 在結尾加上 便於...