【发布时间】:2023-12-04 18:18:01
【问题描述】:
我目前正在学习 Python 和计算理论课程,最近在期中考试中遇到了一个我根本无法解决的难题。它涉及为添加数字的程序编写代码。我相信这个问题应该使用递归。我不记得问题的具体措辞,但这是基本思想。
实现multiadder(n) 函数,该函数接受一个非负整数n 并将n 任意值相加。要添加的每个值都必须作为单独的调用编写。例如:
>>> multi_three = multiadder(3)
>>> multi_three(1)(2)(3)
6
>>> multiadder(5)(1)(2)(3)(4)(5)
15
代码必须通过填空来编写。
def multiadder(n):
assert n > 0
if _________________________ :
return _________________________
else:
return _________________________
我们在课堂上讨论的主题是高阶函数、递归、lambda 和控制语句。我们不允许使用列表和集合之类的数据结构,也不允许导入任何东西。
请有人帮忙。这是我唯一不能参加考试的问题!
【问题讨论】:
-
如果允许您向
multiadder添加具有默认值的第二个参数,这很容易。既然你说你不记得确切的问题,你确定这里的空格是正确的吗? -
我真的不确定是否可以填充给定的结构。您需要同时跟踪累加器状态和级别状态(知道何时停止返回可调用对象并返回累加值),并且您只有一个变量可以使用,
n。 -
加数为任意整数。我不记得问题的确切措辞,但我肯定知道的代码结构是正确的。教授有可能犯了错误,但据我所知,这将是他在考试中的第一个错误。
-
这不是将 Stack Overflow 用作代码编写服务的例子吗?
-
这并不宽泛。答案很简短。
标签: python recursion functional-programming