日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

小甲鱼Python第二十二讲课后习题

發(fā)布時間:2025/3/15 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 小甲鱼Python第二十二讲课后习题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
筆記:
斐波那契數(shù)列的兩種實現(xiàn)方式: 迭代的方式: 自己寫的: def fab(n):
n1 =1
n2 =1
n3 =1
if n < 1:
return -1
if n ==1:
return 1
if n == 2:
return 1
while (n-2)>=0: #這里總寫for循環(huán)
n3 = n1 +n2   #n1 和 n2的順序總寫反
n1 = n2
n2 = n3
n -=1
return n3
result =fab(20)
if result != -1:
print('總共有小兔子%d 只'%result)

遞歸的方式:
自己寫的

def aaa(n):
  if n <0:
    return -1
  if n ==1 or n ==2:
    return 1
  else:
    return aaa(n-1)+aaa(n-2)


result =aaa(20)
if result!=-1:
  print('總共%d只兔子'%result)

?

用遞歸的方式解決漢諾塔問題:

def hannoi(n,x,y,z):
if n == 1:
print(x,'-->',z)
else:
hannoi(n-1,x,z,y)#將前n-1個盤子移動到y(tǒng)上
print(x,'-->',z)#將最底下的盤子移動到z上
hannoi(n-1,y,x,z)#將y上的n-1個盤子移動到z上

n = int(input('請輸入漢諾塔的層數(shù):'))
hannoi(n,'X','Y','Z')

?

動動手:

0. 使用遞歸編寫一個十進制轉(zhuǎn)換為二進制的函數(shù)(要求采用“取2取余”的方式,結(jié)果與調(diào)用bin()一樣返回字符串形式)。

def Bin(n):
temp = ''
if n:
temp = Bin(n//2)
temp += str(n%2)
return temp
else:
return temp

num = int(input('請輸入一個十進制數(shù):'))
print(num,'-->',Bin(num))

1. 寫一個函數(shù)get_digits(n),將參數(shù)n分解出每個位的數(shù)字并按順序存放到列表中。舉例:get_digits(12345) ==>
[1, 2, 3, 4, 5]
解題思路:利用除以10取余數(shù)的方式,每次調(diào)用get_digits(n//10),并將余數(shù)存放到列表中即可。要注意的是結(jié)束條件
設置正確。 def get_digits(n):
result = ''
if n:
result = get_digits(n//10)
result += str(n%10)
return list(result)

num = int(input('請輸入一個數(shù):'))
print(get_digits(num))


2. 還記得求回文字符串那道題嗎?現(xiàn)在讓你使用遞歸的方式來求解,親還能傲嬌的說我可以嗎?
解題思路:有好多種方法,不過綜合效率來說,小甲魚的實現(xiàn)方式比較樸素,利用遞歸每次索引前后兩個字符進行對
比,當start > end的時候,也正是首尾下標“碰面”的時候,即作為結(jié)束遞歸的條件。

def Huiwen(temp,start,end):
if start > end:
return 1
else:
if temp[start]==temp[end]:
return Huiwen(temp,start+1,end-1)
else:
0

temp = input('請輸入一段文字:')
length = len(temp)
end = len(temp)-1
if Huiwen(temp,0,end):
if temp[0:length//2] == temp[length//2:length]:
print('%s不是一個回文字符串!'%temp)
else:
print('%s是一個回文字符串!'%temp)
else:
print('%s不是一個回文字符串!'%temp)


3. 使用遞歸編程求解以下問題: def Age(n):
if n == 1:
return 10
if n > 1:
age = 10
age = Age(n-1) + 2
return age

num = int(input('請輸入要查詢的編號:'))
print('第%d個人的年齡是:%d'%(num,Age(num)))

轉(zhuǎn)載于:https://www.cnblogs.com/jieperhaps/p/9039640.html

總結(jié)

以上是生活随笔為你收集整理的小甲鱼Python第二十二讲课后习题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。