20):題目:猴子吃桃問題:猴子第一天摘下若干個桃子,立即吃了一半,還不癮,又多吃了一個次日早上又將剩下的桃子吃掉一半,又多吃了一個。之後天天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。python
程序分析:採起逆向思惟的方法,從後往前推斷。app
程序源代碼:優化
#!/usr/bin/python # -*- coding: UTF-8 -*- x2 = 1 for day in range(9,0,-1): x1 = (x2 + 1) * 2 x2 = x1 print x1
以上實例輸出結果爲:spa
1534
Python3 參考方案:.net
#!/usr/bin/python3 x = 1 for day in range(0,9): x = (x+1)*2 print(x)
公式推導:code
x÷2-1=1 x÷2=2 x = 4 4=(1+1)×2
#!/usr/bin/python # -*- coding: UTF-8 -*- m = [1] Tn = 1 for i in range(9): Tn = (Tn+1)*2 m.append(Tn) print(m[len(m)-1])
Python3 參考方法:blog
#!/usr/bin/python3 x1=1 n1=9 while n1>0: x1=(x1+1)*2 print(n1,x1) n1=n1-1
#!/usr/bin/env python # -*- coding: utf-8 -*- def taozi(n): if n == 1: return 1 else: return (taozi(n-1)+1)*2 print taozi(10) #遞歸思路
Python2.x 與 Python3.x 兼容:排序
#!/usr/bin/python # -*- coding: UTF-8 -*- daypeach = [] daypeach.append(1) curpeaches = lambda x: (x + 1) * 2 for i in range(0, 9): daypeach.append(curpeaches(daypeach[i])) print('第一天共摘了%d個' % daypeach[9])
利用正序的遞歸排序,使用的是Python 3.6:遞歸
# -*- coding:UTF-8 -*- def fun(x): if x==10: return 1 else: return (fun(x+1)+1)*2 print(fun(1))
# -*- coding: UTF-8 -*- def peach(n): return 1 if n==1 else (peach(n-1)+1)*2 for i in range(1,11): print('第%d天原有%d個桃子,摘了%d個'%(i,peach(11-i),peach(11-i)/2+1))
最後一個實例用的是遞歸,在前面的遞歸上有了一小部分優化。若是感受不錯的話,請多多點贊支持哦。。。utf-8
原文連接:https://blog.csdn.net/luyaran/article/details/80063297