思路:把上方n-1個盤子看成乙個整體
1.把n-1個盤子從a經過c移動到b
2.把最後乙個盤子移動到c
3.把n-1個盤子從b經過a移動到c
先比較a, b大小,若不能整除,將除數與餘數作為新的被除數與除數
def euclidean(a, b):
max = a if a>b else b
min = b if a>b else a
if max % min == 0:
return min
else:
return euclidean(min, (max % min))
print("最大公約數: "+ str(euclidean(8a251, 6105)))
最小公倍數 * 最大公約數= a * b
將乙個十進位制整數轉化為任意進製(十六進製制及以下)
結束條件,整除後的數小於base(多少進製)
用dict可以方便輸出abcdef,並起到了由整數到字元的變化
def inttobase(num, base):
dict = "0123456789abcdef"
if num < base:
return dict[num]
else:
return inttobase(num//base, base) + dict[num%base]
print(inttobase(1323, 16))
資料結構與演算法之遞迴
以階乘舉例 def factorial n 階乘 if n 0 return 1 else return n factorial n 1 函式每被呼叫一次就會被壓棧,而且引數減一再次呼叫再次壓棧,當達到終止條件時,遞迴就會終止,從棧底往上返回return的結果。二分查詢 終止條件 找到終止 目標值等...
演算法與資料結構 六 之遞迴
定義 程式呼叫自身的程式設計技巧,先遞進,再回歸。它通常把乙個大型複雜的問題層層轉化為乙個與原問題相似的規模較小的問題來求解 構成遞迴需具備的條件 package com.yan.study.algorithm.queue letcode中煉表的遞迴刪除 param definition for s...
資料結構之遞迴演算法
迭代思想 遞迴事實上就是函式自己呼叫自己,我們先一起看下 的實現,然後再來分析 例如 i 5 的時候,不停地呼叫自身,只有當 i 0,1 時才可以計算結果。在高階語言中,函式呼叫自己和呼叫其他函式並沒有本質的不同。我們把乙個直接呼叫自己或通過一系列的呼叫語句間接地呼叫自己的函式,稱作遞迴函式。迭代使...