Python递归问题补充代码

已知:某路公共汽车,每经过一站,都会下一半的乘客,然后再上1位乘客,到了第7站还剩3位乘客,求一开始的乘客是多少?我试了好多次都算不对,填什么进省略号里得到的一开始的乘客数量都不是321个人
def bus(n):
if n==7:
return 3
return ...
print(bus(1))
请赐教

def bus(n):
    if n == 7:
        return 3
    else:
        return 2 * bus(n + 1) + 1

print(bus(1))

如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

def bus(n):
  if n == 7:
    return 3
  return 2 * bus(n+1) + 1

print(bus(1))
  • base case: 当n=7时,返回3(第7站还剩3人)
  • 递归关系:
    • 上一站的人数 = 当前站的2倍 + 1 (上车1人)
    • 所以return 2 * bus(n+1) + 1

321根本不能被2整除啊
那怎么可能一开始是321个人呢
这里应该填写return (bus(n+1)-1)*2
得到答案是66
可以写段代码验证一下走了6站之后是不是还剩3个人
-=-=-=-=
为什么是这个公式其实很好理解
每次下一半再上来一个
那么如果车反过来走,一开始车上有3个人,每站下去一个再上来一倍,那么走6站不就是一开始的人数吗