我是python的新手,我在返回factorial变量时遇到了麻烦。我正在尝试创建一个递归函数。我一直在第12,9和7行得到错误,在分配之前引用了“局部变量'因子'”。任何帮助表示赞赏。
global userinput
userinput = input('What integer would you like to to find a total factorial for?')
def recursion(counter):
if counter < 3:
factorial = 1
if counter <= userinput:
factorial = factorial * counter
increase = counter + 2
recursion(increase)
else:
return factorial
efactorial = recursion(2)
ofactorial = recursion(1)
tfactorial = efactorial + ofactorial
答案 0 :(得分:1)
如果recusion函数中的counter
超过3,则factorial
不会被分配。因此,第二个if中的表达式将触发未分配错误。试试这个:
def recursion(counter):
if counter < 3:
factorial = 1
else:
factorial = xx # Any value you want
...
答案 1 :(得分:0)
立即问题
其他几个人已经指出,如果输入参数是&gt; = 3,那么您使用的是您尚未定义的局部变量(给定值)。在此之后,您将立即使用递归步骤,但然后忽略返回值:
factorial = counter * recursion(counter + 2)
return factorial
递归会返回一个值,但您无法将其保留在任何位置。因此,你完全失去了结果。
<强>技术强>
通常,您使用递归来解决更简单的问题,然后在解决方案中包含该更简单问题的结果。 使用您已经提供的代码,它可能看起来像这样:
return counter * recursion(counter + 2)
或者只是
{{1}}
功能问题
我不知道你为什么把奇数和偶数分开。你得到的结果不是数学家称之为&#34; factorial&#34;。
COMMON APPROACH
实际阶乘函数是一种常见的编程练习。规范算法是从所需的数字开始,然后向后工作1.这是你在发布问题之前应该做的研究;很明显,你有一个不同的问题,你需要你的代码的解决方案。