Python 尝试使函数从集合值递归地添加数字

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:

我正在尝试创建一个递归函数,将所有数字从开始到停止(递归的)相加

递归搜索范围(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:
        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))