
一根高筋拉面,中间切一刀,可以得到2根面条。
如果先对折1次,中间切一刀,可以得到3根面条。
如果连续对折2次,中间切一刀,可以得到5根面条。 那么,连续对折10次,中间切一刀,会得到多少面条呢?
| 对折次数 | 切一刀 | 根数 | 迭代 |
|---|---|---|---|
| 0 | 1 | 2 | 2 |
| 1 | 1 | 3 | 2 + 2^ 0 |
| 2 | 1 | 5 | 2 + 2^ 0 + 2^ 1 |
| 3 | 1 | 9 | 2 + 2^ 0 + 2^ 1 +2^2 |
| … | … | … | … |
| n | 1 | ? | … |
我们发现除了首次不进行对折次数为0,其余进行对折后,再切一刀符合等比函数进行求和:
等比数列中的每一项可以使用 pow()函数
求和可以使用循环表示
问题解决了!!!
def cut_pickle(cut_num, sum=2):
if cut_num == 0:
sum = 2
else:
for i in range(cut_num+1, 1, -1):
sum += pow(2, i-2)
return sum
if __name__ == '__main__':
sum = cut_pickle(10)
print(sum)
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)