我正在构建一个程序,它将以递归方式对给定列表中的数字求和。比如说,如果源列表有 10 个元素,那么第二个列表将有 9 个,第三个列表将有 8 个,依此类推,直到最后一个只有一个元素的列表。这是通过将第一个元素添加到第二个元素,然后将第二个元素添加到第三个元素等等来完成的。我被困在没有来自 shell 的反馈的情况下。它在没有任何错误的情况下停止,然后在几秒钟内风扇像疯了一样旋转。
我在这里阅读了很多帖子并改变了我的方法,但我不确定到目前为止的内容能否产生我正在寻找的结果。提前致谢:
#---------------------------------------------------
#functions
#---------------------------------------------------
#sum up pairs in a list
def reduce(inputList):
i = 0
while (i < len(inputList)):
#ref to current and next item
j = i + 1
#don't go for the last item
if j != len(inputList):
#new number eq current + next number
newNumber = inputList[i] + inputList[j]
if newNumber >= 10:
#reduce newNumber to single digit
newNumber = sum(map(int, str(newNumber)))
#collect into temp list
outputList.append(newNumber)
i = i + 1
return outputList;
#---------------------------------------------------
#program starts here
#---------------------------------------------------
outputList = []
sourceList = [7, 3, 1, 2, 1, 4, 6]
counter = len(sourceList)
dict = {}
dict[0] = sourceList
print '-------------'
print 'Level 0:', dict[0]
for i in range(counter):
j = i + 1
if j != counter:
baseList = dict.get(i)
#check function to understand what it does
newList = reduce(baseList)
#new key and value from previous/transformed value
dict[j] = newList
print 'Level %d: %s' % (j, dict[j])