我正在尝试创建一个程序,它接受用户整数输入,然后创建一个列表 使用递归添加列表。问题是,当我输入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()
答案 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中定义。