无法弄清楚如何计算用户输入的整数到阶乘

问题描述

我从9月开始介绍Python课程,但我几乎没有跟上。这周的任务使我感到困惑。我得到了老师和https://jekyllrb.com/docs/configuration/front-matter-defaults/的帮助,所以我有了一些了解,但这并不是我所不能及的。我在一周内进行了许多更正,因此我的代码看上去比以前更好,但是我仍然不明白我在做什么错。

不是为n创建阶乘,而是将n作为用户的输入值显示。我尝试在不同的行上输入阶乘(n),但它只给我一个EOF错误。有人可以解释我在做什么错吗?我的信念是我需要调用阶乘函数,但是我似乎无法正确设置其格式。

def factorial(n):
    if n==0:
        return 1
    else:
        recurse = factorial(n-1)
        result = n * recurse
        return result




done=False
while not done:
    n=input('Enter a Positive Integer \n>>>')
    try:
        n=int(n)
        if n>=0:
            done=True
    except:
        print('try again')

print('n is ',n)

解决方法

简单修复。

def factorial(n):
    if n==0:
        return 1
    else:
        recurse = factorial(n-1)
        result = n * recurse
        return result




done=False
while not done:
    n=input('Enter a Positive Integer \n>>>')
    try:
        n=int(n)
        if n>=0:
            done=True
    except:
        print('try again')

print('n is ',factorial(n))
,

为了获得n的阶乘,您需要调用该函数。 例如:res = factorial(n)