python中的此递归程序给我一个错误

时间:2019-02-25 00:20:55

标签: python python-3.x

def fact(number=input("Enter a value:")):
    if number==1:
        return 1
    else:
        return number*fact(number-1)


res=fact()
print(res)

2 个答案:

答案 0 :(得分:1)

使用不返回常量的函数(例如input)初始化参数变量通常是不好的。另外,input返回字符串,而不是整数,因此需要进行转换。我建议您这样更改它:

def fact(number):
    if number <= 1:
        return 1
    else:
        return number*fact(number-1)

number = int(input("Enter a value:"))
res = fact(number)
print(res)

答案 1 :(得分:0)

尝试将输入转换为整数。默认情况下,它作为字符串。

def fact(number=int(input("Enter a value:"))):
    if number==1:
        return 1
    else:
        return number*fact(number-1)


res=fact()
print(res)