这个问题在python(或类似)中被赋予了一个递归函数,可以重写它,这样它就不会引用自己。我做了一个简单的例子,适用于这个问题。当然,不允许将其设置为非递归函数。它仍然必须执行相同的递归过程。
def fact(n):
if n == 0:
return 1
return n * fact(n - 1)
这也相当于一个简写。
fact = lambda n: 1 if n == 0 else n * fact(n - 1)
在示例中,我不应该在函数定义内部调用。fact
编辑:
其他约束:解决方案工作时,不必进行分配。
没有附加约束的一种解决方案(来自注释)是创建两个函数,它们交替调用彼此并有效地执行阶乘。这是不允许的,因为它要求您在两个变量中分配两个函数。ab
不需要赋值的函数的快速示例是
f = lambda x: x + 1
为了让它执行在arugment上,我可以写55
(lambda x: x + 1)(55)
因此,分配是没有必要的。
对此有什么提示吗?还是我被骗到了一个不可能的问题?
茅侃侃
catspeake
相关分类