Python:返回一个变量

时间:2017-03-03 02:05:14

标签: python recursion

我是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

2 个答案:

答案 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.这是你在发布问题之前应该做的研究;很明显,你有一个不同的问题,你需要你的代码的解决方案。