【发布时间】:2020-03-28 16:48:49
【问题描述】:
我正在尝试创建一个递归函数来添加从开始到停止的所有数字 (recursive_sumrange(start,stop)。一些输出示例如下。
recursive_sumrange(7, 2) >> 27
recursive_sumrange(2, 7) >> 27
recursive_sumrange(2, 2) >> 2
recursive_sumrange(-1, 1) >> 0
我尝试了以下代码,但它不会添加范围内的最后一个数字,如果起始值大于终止值,它也不起作用。
def recursive_sumrange(start, stop):
lst = ""
if(start == stop):
return 0
else:
lst = [elem for elem in range(start, stop+1)]
return lst[0] + recursive_sumrange(start+1, stop)
print(recursive_sumrange(int(input("Enter start: ")), int(input("Enter stop: "))))
编辑这是提出的解决方案:
def recursive_sumrange(start, stop):
lst = ""
if(start == stop):
return start
elif(start > stop):
lst = [elem for elem in range(stop, start+1)]
return lst[0] + recursive_sumrange(start, stop+1)
elif(start < stop):
lst = [elem for elem in range(start, stop+1)]
return lst[0] + recursive_sumrange(start+1, stop)
print(recursive_sumrange(int(input("Enter start: ")), int(input("Enter stop: "))))
【问题讨论】:
-
看看你的代码,想想
recursive_sumrange(2, 2)会发生什么。关于start > stop,您应该在开始时检查,然后交换值。
标签: python python-3.x list python-2.7 recursion