def get_height(n):
if n==1:
eturn 150
return 100+sum([200*pow(0.5,i) for i in range(1,n)])+100*pow(0.5,n)
for i in range(1,5):
print get_height(i)
150 225.0 262.5 281.25
结果如上,
递归法求解如下:
def get_height(n):
if n==1:
eturn 150
return get_height(n-1)+100*pow(0.5,n-1)+100*pow(0.5,n)
其实思路就是,当前走的路程加上当前高度,再加上当前高度的一半,python何其简洁也
上面有些问题,上面求的是每次落下后回弹到一半时走过的距离,一般是让求第n次落地的距离,
稍做修改即可 :
def get_height(n):
if n==1:
eturn 100
return get_height(n-1)+200*pow(0.5,n-1)
for i in range(1,5):
print get_height(i)
或者
def get_height(n):
if n==1:
eturn 100
return 100+sum([200*pow(0.5,i) for i in range(1,n)])
for i in range(1,5):
print get_height(i)
思路和上面差不多,有归纳法和递归法,
归纳法就是写出第一次走的距离,第二次的,第三次的,总结一下规律
递归法,就是当前距离加上回弹高度的2倍,这小题,练递归蛮爽的