python - 试图使一个函数从设定值中递归地添加数字
问题描述
我正在尝试创建一个递归函数来添加从开始到停止的所有数字(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: "))))
解决方案
这应该有效,我添加了一个新参数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))
推荐阅读
- pandas - 如何获取一行中的最后一个可用值来填充 NaN 值
- html - 如何解码此文本并将其显示为阿拉伯语?
- c# - 我想在我的 Winform 应用程序中添加 Telerik Grid 但遇到运行时异常
- docker - 为什么我的服务在 docker swarm 中启动后没有出现在网络上?
- flutter - 颤振类型'列表
' 不是类型转换中类型 'String' 的子类型 - javascript - 在 Mutation Observer 中设置变量会导致 Mozilla 崩溃
- loops - For循环函数
- html - 如何仅使用 HTML 和 CSS 使我的响应式导航栏具有粘性?
- java - Gson 库无法像解析大型 JSON 文件那样可靠地工作
- html - 为使用 jQuery 创建的复选框元素设置处理程序的最佳方法