我有一个数字列表
((100),(99),(97),(96),(3),(2))
如果第二个数字在它之前的数字的2之内,我想从该数字取2,并且除非最后一个数字变为负数,否则列表中的所有数字,例如
First iteration, substrate 2 from 97 and lower
((100), (97), (95), (94,),(1),(0))
Second iteration, substrate 2 from 94 and lower
((100), (97), (95), (92), (0),(0))
答案 0 :(得分:0)
这是一个使用递归函数shift
和辅助函数subtract2
的答案:
def subtract2(p, i):
while i < len(p):
p[i] = p[i] - 2 if p[i] - 2 >= 0 else p[i]
i += 1
def shift(p, i):
# base case
if i >= len(p) - 1:
return
elif p[i] - 2 <= p[i+1]:
subtract2(p, i+1)
# recurse
return shift(p, i+1)
希望这有帮助