對遞迴的一些了解

2021-10-06 20:49:33 字數 556 閱讀 9849

遞迴指的是乙個函式呼叫自己的函式,遞迴可以讓問題的解決方案更清晰,但是遞迴並沒有效能上的優勢。

在編寫遞迴時,要告訴程式何時停止遞迴。正因為如此,每個遞迴函式都有兩個部分:基線條件(base case)和遞迴條件(recursive case)。遞迴條件指的是函式呼叫自己,而基線條件則指函式不再呼叫自己,從而避免形成無限迴圈。

如下程式所示:

def countdown(i):

print i

if i <= 1: # 基線條件

return

else: # 遞迴條件

countdown(i-1)

棧,是乙個非常重要的資料結構,使用遞迴時必須要理解這個概念。

呼叫棧:指的是在乙個函式fun1()內部呼叫了其他函式sub_fun()時,當前函式fun1()就會暫停並且處於未完成狀態,與當前函式有關的所有變數值都還存在記憶體中。而此時呼叫的函式sub_fun()就會處於棧頂,直到這個函式執行完畢,會從棧頂彈出,然後原函式fun1()會繼續執行,直到最後結束,棧中函式為空。

iOS 對RunTime的一些簡單了解

好多天沒有寫部落格,就把這些天總結的一些東西拿出來分享下 下面簡單的談一談runtime,小弟才疏學淺,有錯誤的地方希望指出來。不多說了直接上 吧,好多筆記都寫成了注釋。runtime 簡稱為執行時。oc就是一種執行時機制,就是再執行的時候執行的一種機制,其中最主要的是訊息機制 相對來說c語言是在編...

對springBoot事務的一些初步了解

事務的兩種管理方式 業務中相關的應用 事務由單獨單元的乙個或者多個sql語句組成,在這個單元中,每個sql語句時相互依賴的。而整個單獨單元作為乙個不可分割的整體,如果單元中某條sql語句一旦執行失敗或者產生錯誤,整個單元將會回滾,也就是所有受到影響的資料將會返回到事務開始以前的狀態 如果單元中的所有...

我對 stdcall和 cdecl的一些了解

stdcall,被這個關鍵字修飾的函式,其引數都是從右向左通過堆疊傳遞的 fastcall的前面部分由ecx edx傳 函式呼叫在返回前要由被呼叫者清理堆疊。實質 函式呼叫約定。注 ecx是計數器,edx是用來存放整數除法產生 的餘數。cdecl是c和c 程式的預設呼叫方式,每乙個呼叫它的函式在返回...