Python 尝试使函数从集合值递归地添加数字
我正在尝试创建一个递归函数,将所有数字从开始到停止(递归的)相加 递归搜索范围(7,2)>>27 递归搜索范围(2,7)>>27 递归搜索范围(2,2)>>2 递归_sumrange(-1,1)>>0 我已经尝试了下面的代码,但是,如果开始值大于停止值,它不会添加范围中的最后一个数字,也不会起作用Python 尝试使函数从集合值递归地添加数字,python,python-3.x,list,python-2.7,recursion,Python,Python 3.x,List,Python 2.7,Recursion,我正在尝试创建一个递归函数,将所有数字从开始到停止(递归的)相加 递归搜索范围(7,2)>>27 递归搜索范围(2,7)>>27 递归搜索范围(2,2)>>2 递归_sumrange(-1,1)>>0 我已经尝试了下面的代码,但是,如果开始值大于停止值,它不会添加范围中的最后一个数字,也不会起作用 def recursive_sumrange(start, stop): lst = "" if(start == stop): return 0 else:
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: "))))
def递归_sumrange(开始、停止):
lst=“”
如果(开始=停止):
回程起动
elif(开始>停止):
lst=[范围内元素的元素(停止、启动+1)]
返回lst[0]+递归的SUMU范围(开始、停止+1)
elif(开始<停止):
lst=[范围内元素的元素(开始、停止+1)]
返回lst[0]+递归的SUMU范围(开始+1,停止)
打印(递归存储范围(int(输入(“输入开始”)),int(输入(“输入停止”))
试试:
这应该行得通,我添加了一个名为
first\u itr
的新参数来处理数字的顺序是否错误(停止,开始)
,而不是(开始,停止)
查看您的代码并思考
recursive\u sumrange(2,2)会发生什么
。关于start>stop
你应该在开始时检查,然后交换值。看看Hi的意思,我解决了它,但这段代码更干净,但我不喜欢它在打印出总和后打印一个,是否有办法解决。这是递归解决方案吗?!@programmer自函数不返回任何内容,若要修复此问题,请将print语句更改为在函数中返回,或者在最后一行调用函数时删除print
def recursive_sumrange(start, stop):
if start > stop:
return sum([i for i in range(stop, start + 1)])
else:
return sum([i for i in range(start, stop + 1)])
print(recursive_sumrange(int(input("Enter start: ")), int(input("Enter stop: "))))
def recursive_sumrange(start, stop, first_itr=True):
if first_itr:
start, stop = sorted([start, stop])
if start > stop:
return 0
else:
return start + recursive_sumrange(start+1, stop, False)
print(recursive_sumrange(7, 2))