經典的遞迴問題:針對遞迴問題,不要深究!分析問題,找到規律,主要是三個條件:
*遞迴條件
*遞迴體
*遞迴出口
1.求n!
def jiechen(n):
if n==1 : #遞迴條件
return 1 #遞迴出口
else:
return n*jiechen(n-1) #遞迴體
value=int(input("請輸入乙個整數:"))
result=jiechen(value)
print("%d的階乘是%d"%(value,result))
2.遞迴實現斐波那契數列的前n項的和def fab(n):
if n<1: #遞迴條件
return "no"
else:
if n==1 or n==2: #遞迴條件
return 1 #遞迴出口
else:
return fab(n-1)+fab(n-2) #底櫃體
value=int(input("請輸入乙個整數:"))
result=fab(value)
print(result)
3.漢諾塔問題def hanoi(n,x,y,z): #n層漢諾塔,x,y,z三個柱子
if n==1:
print(x,"-->",z) #如果只有一層,直接把x上的盤子移動到z上
else:
hanoi(n-1,x,z,y) #把n-1個盤子移動到y上
print(x,"-->",z) #把剩餘的乙個移動到z上
hanoi(n-1,y,x,z) #把y上的n-1個移動到z上
level=int(input("請輸入漢諾塔的層數:"))
hanoi(level,"x","y","z")
函式的補充:
for index,content in enumerate(可迭代物件):
print(index,content)
注意:content就是可迭代物件裡面的元素
皇后問題 經典遞迴
八皇后問題是乙個以西洋棋為背景的問題 如何能夠在 8 8 的西洋棋棋盤上放置八個皇后,使得任何乙個皇后都無法直接吃掉其他的皇后?為了達到此目的,任兩個皇后都不能處於同一條橫行 縱行或斜線上。上圖是乙個合格的皇后棋盤。如果要計算可以擺放的種數和求出擺放的情況,解決方案就是,每次按行搜尋,然後搜尋中確保...
python經典案例 Python遞迴的經典案例
目錄 一 遞迴的簡介 二 遞迴的經典應用 2.1 遞迴求階乘 2.2 遞迴推斐波那契數列 2.3 二分法找有序列表指定值 2.4 遞迴解漢諾塔 前言 當我們碰到諸如需要求階乘或斐波那契數列的問題時,使用普通的迴圈往往比較麻煩,但如果我們使用遞迴時,會簡單許多,起到事半功倍的效果。這篇文章主要和大家分...
遞迴經典問題 N皇后問題
n皇后問題是指在乙個n n的西洋棋棋盤上,有n個棋子,這n個棋子均不在同一行,同一列,同一對角線上,請問一共有幾種排列方式?因為每列都要有棋子,所以只要把每一列的棋子所在的行數排下來就行了,比如第一列到第五列棋子所在的行數依次是24135,然後只要檢視每種方法是否滿足要求就行了。void gener...