为什么我的Python代码给我这个错误:TypeError: unsupported operand type(s) for +: 'int' and 'NoneType

问题描述 投票:0回答:1

编辑

问题出在我的压痕上

原始问题

我是 Python 的新用户,我对 None 类型有疑问,我看了不同的问题,但问题仍然存在。

我的代码是计算阶乘

def fact(k): 
    if k > 0: 
        result = k + fact(k-1) 
        print(result) 
    else: 
        result=0 
    return result

fact(3)
python function recursion factory
1个回答
1
投票

我尝试了你的代码,但无法产生该错误。我认为您存在一些缩进问题,其中您的循环不遵循您期望的逻辑。请记住循环中的内容和循环外的内容取决于空白,因此请小心制表符和空格。

你的逻辑也有一些错误

  1. 你需要 k * fact(k-1) 而不是 +
  2. 其他应该是结果= 1

编辑后的代码是这样的:

def fact(k): 
    if k > 0: 
        result = k * fact(k-1) 
        print(result) 
    else: 
        result=1 
    return result

还有一种更 Pythonic 的编写函数的方法是让它返回实际结果,而不是将结果传递给变量并返回变量。 我的假设是您在函数中打印结果以进行故障排除,因为这在您的最终版本中肯定会被删除。无论如何,请尝试使用以下代码:

def fact_v2(k): 
    if k > 0: 
        return k * fact_v2(k-1) 
    else: 
        return 1 

你会这样称呼你的函数:

print(fact_v2(11))

祝你好运,Python 是一门有趣的语言,乍一看可能有点吓人,但你会成功的!

© www.soinside.com 2019 - 2024. All rights reserved.