python遞迴練習

2021-09-14 00:52:50 字數 2188 閱讀 1452

1、漢諾塔問題:

複雜度:

f(n)=f(n-1)+1+f(n-1)

n層:2^n-1步

def func(n,fromm,to,help):

if n==1:

print("move"+" "+str(1)+" "+"from"+" "+fromm+" "+"to"+" "+to)#base case

else:

func(n-1,fromm,help,to) #將n-1層從fromm挪到help

print("move"+" "+str(n)+" "+"from"+" "+fromm+" "+"to"+" "+to) #第n層單獨挪動

func(n-1,help,to,fromm) #將n-1層從help挪到

func(3,"left","right","mid")

2、列印字串的子串行:(順序一樣,可以不連續)

def func(arr,i,pre):

if (i==len(arr)):

if pre!="":

print(pre)

return

func(arr,i+1,pre+arr[i])

func(arr,i+1,pre)

arr="abc"

arr="".join(arr)

func(arr,0,"")

3、列印字串的全排列:(去重)

思想:

i位置把(i,n-1)位置所有字元嘗試一遍(和每個位置交換),位置之後的隨機排列

def printallpermutation(arr,i):

if i==len(arr):

print((''.join(arr)))

m= #去重

for j in range(i,len(arr)):

if arr[j] not in m: #去重

arr[i],arr[j]=arr[j],arr[i]

printallpermutation(arr,i+1)

arr[i], arr[j] = arr[j], arr[i]

arr1=list("abc")

arr2=list("acc")

printallpermutation(arr1,0)

print("----------")

printallpermutation(arr2,0)

4、問題:

有乙隻母牛,一年生乙隻母牛,新母牛三年後一年生乙隻母牛,母牛六年後死亡,n年後有多少只母牛?

思路:

f(n)=f(n-1)+f(n-3)-2*f(n-6) #減去6年前的母牛個數還有孩子個數,乘2

**:

def count(n):

if n<1:

return 0

if n<=3:

return n

if n<6:

return count(n-1)+count(n-3)

return count(n-1)+count(n-3)-2*count(n-6)

print(count(7))

5、逆序乙個棧(不占用額外空間)

def getandremovelastelement(stack): #得到棧底元素並返回

result=stack.pop()

if not stack:

return result

else:

last=getandremovelastelement(stack)

return last

def reverse(stack):

if not stack:

return

i=getandremovelastelement(stack)

reverse(stack)

s=[3,2,1]

reverse(s)

print(s)

Python 函式練習(包括簡單遞迴)

list sort key none reverse false reverse 排序規則,reverse true 降序,reverse false 公升序 預設 p a b c 2 s sqrt p p a p b p c s axjnxk print s 1 s abc for i in s ...

Python 練習例項28 遞迴求年齡

題目 有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。問第4個人歲數,他說比第3個人大2歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第乙個人大兩歲。最後問第乙個人,他說是10歲。請問第五個人多大?程式分析 利用遞迴的方法,遞迴分為回推和遞推兩個階段。要想知道第五個人歲數,需知道第四...

python練習 使用遞迴函式實現階乘

遞迴函式 乙個函式在內部呼叫自己本身 自己呼叫自己 考慮什麼時候跳出階乘 1 1 2 2 1 3 3 2 n n n 1 def factorial n if n 1 return 1 函式遇到return結束執行 else return n factorial n 1 result factori...