对于家庭作业问题,我想打印列表中的项目,将每个项目加一。我想使用递归来做到这一点(理想情况下不改变列表)。
注意:我知道递归不是 Python 或任何其他语言的标准解决方案(我不打算在任何现实世界的 Python 实现中使用它),但这是 CS 课程的递归部分的一部分。
我认为这个问题可以通过使用简单的for
循环以更简单和更 Pythonic 的方式解决(我还没有学习列表推导):
def iter_increment(p):
for n in p:
print n + 1
print iter_increment([1,2,3,4])
为了递归地解决这个问题,我创建了一个列表的副本:
def rec_increment(p):
if len(p) == 0:
return
else:
r = list(p)
print r.pop(0) + 1
return rec_increment(r)
print rec_increment([1,2,3,4])
我的问题是,是否可以通过在仍然使用递归的同时不改变列表副本来简化或改进代码?