【问题标题】:This recursive program in python giving me an errorpython中的这个递归程序给了我一个错误
【发布时间】:2019-02-25 00:20:55
【问题描述】:
def fact(number=input("Enter a value:")):
    if number==1:
        return 1
    else:
        return number*fact(number-1)


res=fact()
print(res)

【问题讨论】:

  • 错误信息是什么?
  • 打开一个 REPL 并运行 input("Enter a value:")。然后输入一个数字,看看结果如何。这不是一个数字。这是什么?

标签: python python-3.x


【解决方案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)

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-20
      • 2012-11-05
      • 2022-12-03
      • 2021-11-24
      • 1970-01-01
      • 2014-04-20
      • 1970-01-01
      • 2021-05-04
      相关资源
      最近更新 更多