遞迴操作其實用處還挺廣泛的,個人認為在秋招中也屬於面試官常考問題之一。列舉幾個經典的例子來幫助自己理解一下遞迴這個牛13的操作。最近才搞懂一點點。
example-1: 實現的階乘。
這個題如果不知道的遞迴的我來寫,肯定是要寫for迴圈。但是用遞迴的話其實就很簡單了。(遞迴中要重點考慮終止條件)
def jiecheng(n):
if n==1:
return 1
return n*jiecheng(n-1)
example-2:求整數n的冪
class solution:
def mypow(self, x: float, n: int) -> float:
if n < 0:
x = 1/x
n = -n
if n == 0:
return 1
if n == 1:
return x
if n % 2 == 0:
return self.mypow(x, n/2)**2
else:
return self.mypow(x, n-1) * x
example-3:二叉樹反轉
class solution:
def inverttree(self, root: treenode) -> treenode:
if not root:
return root
node = root
#print(node)
if node:
node.left, node.right = node.right, node.left
self.inverttree(node.left)
self.inverttree(node.right)
return root
example-4:斐波那契數列(爬樓梯)
斐波那契數列是指當前位數字前兩位數之和,例如[1,2,3,5,8,13...],求第n位斐波那契數。
#digui#
def feibonaqi(n):
if n == 1 or n ==2:
return 1
else:
return feibonaqi(n-1)+feibonaqi(n-2)
#feidigui_1#
def geibonaqi(n):
res=[0,1]
while len(res)return res[n]
#feidigui_2#
def feibonaqi(n):
a=0b=1
res=
while b<10000:
a,b = b,a+b
return res
十分鐘完成的作業系統
買了一本于淵的 orange s 乙個作業系統的實現 很是感謝作者的分享,正如作者所說的 os from scratch 於是想把學習過程中碰到的問題和心得記錄下來.好吧,直接進入主題,引導扇區,如下 作者已經把扇區的引導說的很清楚了,我就不再贅述了,我們重點看看這段 要幹什麼 其實就是在顯示器上列...
十分鐘的代價
2008年9月15日上午10 00,擁有158年歷史的美國第四大投資銀行 雷曼兄弟公司向法院申請破產保護,訊息轉瞬間通過電視 廣播和網路傳遍地球的各個角落。令人匪夷所思的是,在如此重大的情況下,德國國家發展銀行在十分鐘後,居然按照外匯掉期協議的交易,通過計算機自動付款系統,向雷曼兄弟公司即將凍結的銀...
十分鐘的悲劇
2008年9 月15日上午 10 00 擁有158 年歷史的美國第四大投資銀行 雷曼兄弟公司向法院申請破產保護,訊息轉瞬間通過電視 廣播和網路傳遍地球的各個角落。令人匪夷所思的是,在如此明朗的情況下,德國國家發展銀行 10 10 居然按照外匯掉期協議的交易,通過計算機自動付款系統,向雷曼兄弟公司即將...