実用:Python 3サルが桃を盗む問題を解決する(1-10日の中でそれぞれ何粒の桃が食べることができます)
1058 ワード
サルは1日目に天宮のいくつかの桃を盗んで、すぐに半分食べて、まだ中毒にならないで、また1つ多く食べて、翌朝また残りの桃を半分食べて、また中毒にならないで1つ多く食べて、それから毎朝すべて前日の残りの半分の1つを食べました.10日目の朝食べたい时になって、やっと1つの桃しか残っていないことを発見して、この幸せなサルの前の1-9日の中でそれぞれどれだけの桃が食べることができますか?ケース1:
実行結果:
ケース2:(関数再帰)
実行結果:
ケース3:(再帰的逆思考)
実行結果:
days = 10
num = 1
loops = days -1
for day in range(loops,0,-1):
num = 2*(num+1)
print('day0{}:{}'.format(day,num))
実行結果:
day09:4
day08:10
day07:22
day06:46
day05:94
day04:190
day03:382
day02:766
day01:1534
ケース2:(関数再帰)
def fn(day=10,peach=1):
print(day,peach)
if day == 1:
return peach
peach = (peach+1) * 2
return fn(day-1,peach)
fn(10,1)
実行結果:
10 1
9 4
8 10
7 22
6 46
5 94
4 190
3 382
2 766
1 1534
Out[220]:
1534
ケース3:(再帰的逆思考)
def fn(day=1,peach=1):
print(day,peach)
if day == 10:
return peach
peach = (peach+1) * 2
return fn(day+1,peach)
fn(1,1)
実行結果:
1 1
2 4
3 10
4 22
5 46
6 94
7 190
8 382
9 766
10 1534
Out[2]:
1534