【问题标题】:What is error in the code for finding factorial in python by recursive function?通过递归函数在python中查找阶乘的代码中有什么错误?
【发布时间】:2021-09-19 18:00:47
【问题描述】:
def fact(n):
    if n==1:
       return
    else:
        return (n * fact(n-1)) 
d=int(input("Enter the number"))
print(fact(d))

我正在尝试在 python 中学习递归函数,但在上面的代码中出现错误

【问题讨论】:

  • 您的基本情况应该返回一个值。特别是fact(1) 的结果
  • 您必须以初始大小写返回值:if n==1: return 1

标签: python recursion factorial


【解决方案1】:

n==1 的情况下,您只有一个返回值,这意味着您隐含地返回了None。从那里开始,错误接踵而至。相反,您应该明确返回1

def fact(n):
    if n==1:
       return 1 # Here
    else:
        return (n * fact(n-1)) 

旁注:
从数学上讲,您可能应该为 n==0 返回 1,而不是 n==1。详情请见https://en.wikipedia.org/wiki/Factorial#Factorial_of_zero

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-16
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    • 2021-09-02
    • 2019-08-06
    • 1970-01-01
    • 2015-04-13
    相关资源
    最近更新 更多