为什么这返回 None ?而不是返回事实?

发布于 2025-01-11 05:56:20 字数 268 浏览 0 评论 0原文

(它不返回任何内容)--->为什么?

fact = 1
def factorial(n):
    if (n-1)!=0:
        global fact
        fact=fact*n
        n=n-1
        print(fact)
        factorial(n)
    else:
        return fact
      
n=int(input())
g=factorial(n)
print(g)

(it returns none)---> why?

fact = 1
def factorial(n):
    if (n-1)!=0:
        global fact
        fact=fact*n
        n=n-1
        print(fact)
        factorial(n)
    else:
        return fact
      
n=int(input())
g=factorial(n)
print(g)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

拔了角的鹿 2025-01-18 05:56:20

因为你需要在阶乘函数中返回factorial(n),否则它只会被调用并且不会在调用函数中返回任何结果。此外,您不需要全局变量,只需在进行递归调用时将其与 factorial 函数本身中的 n 一起传递即可。

此外,还有一个最干净的解决方案,没有任何不必要的变量:

def factorial(n):
    if n < 2:
        return 1
    else:
        return n * factorial(n-1)

如果你不想重新发明轮子,只需使用 math 模块:

import math

math.factorial(1234)

Because you need to return factorial(n) in factorial function, otherwise it just gets called and does not return any result in the calling function. Also, you don't need the global variable, simply pass it along with n in the factorial function itself when doing recursive call.

Also, there's a cleanest solution without any unnecessary variables:

def factorial(n):
    if n < 2:
        return 1
    else:
        return n * factorial(n-1)

And if you dont wanna reinvent the wheel just use math module:

import math

math.factorial(1234)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文