猴子第一天偷摘天宫若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又不过瘾多吃了一个,以后每天早上都吃了前一天剩下的一半零一个.到了第10天早上想吃的时候,才发现只剩下一个桃子了,求这只幸福的猴子前面1-9天里分别有多少桃子可以吃?
案例一:
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
案例二:(函数递归)
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
案例三:(递归逆向思维)
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