首页 > 解决方案 > 试图使一个函数从设定值中递归地添加数字

问题描述

我正在尝试创建一个递归函数来添加从开始到停止的所有数字(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: "))))

标签: pythonpython-3.xlistpython-2.7recursion

解决方案


这应该有效,我添加了一个新参数first_itr来处理如果数字以错误的顺序(stop, start)而不是(start, 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))

推荐阅读