python學習week5-遞迴,匿名函數、產生器

來源:互聯網
上載者:User

標籤:學習   app   ...   遞迴   字串   pen   一個   資源   利用   

1、遞迴函式

1.1、遞迴函式的限制

  (1)遞迴一定要有允出準則,並且遞迴調用一定要執行到這個允出準則;如果沒有允出準則,就是無限調用,會耗盡所有資源(棧空間);

  (2)遞迴調用的深度不易過深,Python對遞迴調用的深度做了限制,以保護解譯器;

1.2、遞迴執行個體

  ①、遞迴實現菲薄拉切數列

# version1:數學公式版本def fib(n):    return 1 if n<3 else fib(n-1)+fib(n-2)print(fib(10))分析:此版本雖然看著簡潔明了,但是會有很大的效率問題,當n操作35以後計算結果就非常慢# version2:利用上一次結果def fib(n,a=0,b=1): # n=3    if n<3:        return a+b    else:        a,b=b,a+b  # 0,1=1,1        return fib(n-1,a,b)分析:版本每次都利用了上一次運算的結果,所以效率相對於第一個版本來說,快了不少;# for迴圈實現a,b=0,1for i in range(10):    a,b=b,a+b    print(a)分析:版本二就是根據for迴圈演變而來

  ②、遞迴實現階乘

def fac(n,sum=1):    if n==1:        return 1    return n*fac(n-1)def fac(n,sum=1):    sum=sum*n    if n<2:        return sum    return fac(n-1,sum)# 版本二將每次計算的結果帶入了下一次計算

  ③、將一個數逆序放入列表


nums=‘1234‘print(nums[len(nums)-1])l=[]for i in range(len(nums)-1,-1,-1): l.append(nums[i])print(l)
# for迴圈實現
def revert(x): if x == -1: return [] return [nums[x]] + revert(x-1)print(revert(len(nums)-1))
# 列表拼接實現def revert(x,target=[]): if x: target.append(x[-1]) revert(x[:-1]) return targetprint(revert(nums))
# 字串切片實

  ④、遞迴解決猴子吃桃問題

‘‘‘xd1=x//2-1d2=d1//2-1d3=d2//2-1......d9=d8//2-1 ==> 2(d9+1)=d8=d7/2-1‘‘‘peach=1for i in range(9):    peach=2*(peach+1)print(peach)‘‘‘這題得倒著推。第10天還沒吃,就剩1個,說明第9天吃完一半再吃1個還剩1個,假設第9天還沒吃之前有桃子p個,可得:p * 1/2 - 1 = 1,可得 p = 4。以此類推,即可手算出。代碼思路為:第10天還沒吃之前的桃子數量初始化 p = 1,之後從9至1迴圈9次,根據上述公式反推為 p = (p+1) * 2 可得第1天還沒吃之前的桃子數量。
for迴圈中的print()語句是為了驗證推算過程而增加的。代碼如下:p = 1print(‘第10天吃之前就剩1個桃子‘)for i in range(9, 0, -1): p = (p+1) * 2 print(‘第%s天吃之前還有%s個桃子‘ % (i, p))print(‘第1天共摘了%s個桃子‘ % p)‘‘‘# 遞迴實現def peach(n=10): if n == 1: return 1 return (peach(n-1)+1)*2print(peach())
2、匿名函數3、產生器4、插入排序

python學習week5-遞迴,匿名函數、產生器

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.