Python經典的遞迴問題0

2021-08-19 09:13:13 字數 1134 閱讀 6325

經典的遞迴問題:針對遞迴問題,不要深究!分析問題,找到規律,主要是三個條件:

*遞迴條件

*遞迴體

*遞迴出口

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...