題外話:由於遞迴深度可控,一般寫類似遞迴的方法時盡量使用迭代器,例如fibonacci數列,在python高階中我會把迭代器實現fibonacci數列的方法貼出來,而不是用遞迴。
遞迴深度盡量不去修改,用起來也會很繞。下面我貼出來如何測試出本機遞迴深度:
def func(num):
if num == 1:
return 1
else:
return num * func(num-1)
print(func(998)) # 這台機子的遞迴最大深度998,這裡數字自己在997-999之間修改,不同機器預設的遞迴深度不同
求出計算機的最大遞迴深度
由於計算機棧的記憶體有限,而函式遞迴會呼叫到棧,所以函式的遞迴深度有限 用以下的 可以求出在本機最大遞迴深度,用二分法測出來的。python和c 差這麼多的原因可能是編譯器分配的棧記憶體不同 棧的記憶體可以自己調整 python def get dep num if num 1 return 1el...
求二叉樹的最大深度(遞迴 非遞迴)
力扣104也有該題,可以使用上面進行驗證。當節點為空時,返回0。不為空時,當前節點為根節點的子樹深度為 左子樹深度 右子樹深度 1。求二叉樹的最大深度 param root return public int maxdepth treenode root return math.max maxdep...
LeetCode 二叉樹最大深度(遞迴)
給定乙個二叉樹,編寫乙個函式來獲取這個樹的最大寬度。樹的寬度是所有層中的最大寬度。這個二叉樹與滿二叉樹 full binary tree 結構相同,但一些節點為空。每一層的寬度被定義為兩個端點 該層最左和最右的非空節點,兩端點間的null節點也計入長度 之間的長度。示例 1 輸入 1 3 2 5 3...