Python 3.x 阶乘的递归函数

Python 3.x 阶乘的递归函数,python-3.x,recursion,Python 3.x,Recursion,我写这段代码是为了得到10,然而,我相信我有一个无限循环,因为它不断重复相同的错误代码。我试图找到问题,但似乎找不到 def calculatingfactor(num2cal): """this fuction will be calculating a mathematical factorial""" if num2cal == 1: returnvalue = 1 elif num2cal <= 0: returnvalue = 0 else:

我写这段代码是为了得到10,然而,我相信我有一个无限循环,因为它不断重复相同的错误代码。我试图找到问题,但似乎找不到

def calculatingfactor(num2cal):
  """this fuction will be calculating a mathematical factorial"""
  if num2cal == 1:
    returnvalue = 1
  elif num2cal <= 0:
    returnvalue = 0
  else:
    print("Calculating the facterial of {}".format(num2cal))
    variable2 = calculatingfactor(num2cal - 1)
    returnvalue = calculatingfactor(num2cal*variable2)
    return 

#main code
first_fact=calculatingfactor(10)
print (first_fact)
def计算因子(num2cal): “”“此函数将计算数学阶乘”“” 如果num2cal==1: 返回值=1
elif num2cal我觉得您代码的递归情况不正确。您应该使用递减1的
num2cal
调用同一个函数,然后返回当前值乘以递归调用返回的值

def calculatingfactor(num2cal):
  if num2cal == 1:
    return 1
  elif num2cal <= 0:
    return 0
  else:
    print("Calculating the facterial of {}".format(num2cal))
    variable2 = calculatingfactor(num2cal - 1)
    return num2cal*variable2 

# main code
first_fact=calculatingfactor(10)
print (first_fact)
def计算因子(num2cal): 如果num2cal==1: 返回1
elif num2cal我确实试过了Tim,但不幸的是,我仍然得到了相同的错误类型error:*:“int”和“NoneType”的操作数类型不受支持,错误打印出来大约20个times@JoanthanMaldonado上面的代码。你的代码中肯定还有其他问题。你的编辑是正确的,这只是我这边的一个错误。非常感谢。但是,我发现您对阶乘有很好的理解:为什么要调用递归函数两次?第二次呼叫将永远不会结束,让您得到一个“StackOverflowException”。您应该更新->returnvalue*=variable2的第10行代码。还要注意,条件“elif num2cal