Python - 创建整数列表并使用递归来添加它们

时间:2014-04-27 20:22:42

标签: python recursion indexing

我正在尝试创建一个程序,它接受用户整数输入,然后创建一个列表 使用递归添加列表。问题是,当我输入6时,它出现了15和 答案应该是(0 + 1 + 2 + 3 + 4 + 5 + 6)= 21.为什么数学错了?我认为它必须在索引中的某个地方,因为如果你离开6,你就会得到15。

#Program which accepts a number from the user
#take the numbers 0 to the number input 
#and gives a total of the numbers

def main():
#Get the number from the user to define upper end of range
    num = int(input('Enter a non-negative integer: '))

#Create the list of numbers
numbers = list(range(0,num, 1))

#Get the sum of the list of numbers
my_sum = range_sum(numbers, 0, - 1)

#Display the total
print('The sum of 0 to', num, 'is: ', my_sum)

def range_sum(num_list, start, end):
if start < end:
    return 0
else:
    return sum(num_list)
#call the main function
main() 

2 个答案:

答案 0 :(得分:0)

使用尾递归:

def range_sum(nums, sum=0):
    if not nums:
        return sum
    sum += nums.pop()
    return range_sum(nums, sum)

答案 1 :(得分:0)

代码中没有递归调用。您正在使用sum函数,该函数在Python中定义。