While 循环数字阶乘不起作用

发布于 2025-01-17 03:20:17 字数 279 浏览 1 评论 0原文

请告诉我为什么这个求阶乘的 python 代码不正确。 我用了while循环,但它不起作用,我不知道为什么。

n = input("Enter number ")

def factorial(n):
    while n >= 0:
         if n == 0:
             return 1
         else:
             return n * factorial(n-1)
    print("Incorrect Input")

Please tell me why this python code to find factorial is incorrect.
I used while loop, and it's not working, I don't know why.

n = input("Enter number ")

def factorial(n):
    while n >= 0:
         if n == 0:
             return 1
         else:
             return n * factorial(n-1)
    print("Incorrect Input")

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

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

发布评论

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

评论(1

梦断已成空 2025-01-24 03:20:17

实际上有多种方法,但两种常见的方法是:

  1. 迭代方法(使用 for 或 while 循环)
  2. 递归方法(函数调用自身)。

它们一般不合并。然而,错误(正如 @matszwecja 在第一条评论中指出的那样)是顶行返回一个 string 而不是 int

迭代方法:

def factorial(n):
    fact = 1
    for num in range(2, n + 1):
        fact *= num
    return fact

递归方法:

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

为了节省重复,这里讨论了许多有效的方法:
Python 中的阶乘函数

There are actually several methods, but two common ones are:

  1. iterative approach (with for or while loops)
  2. recursive approach (function calls itself).

They are generally not combined. However, the error (as pointed out in the first comment here by @matszwecja) is that the top line returns a string and not an int.

iterative approach:

def factorial(n):
    fact = 1
    for num in range(2, n + 1):
        fact *= num
    return fact

recursive approach:

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

To save repetition many valid methods are discussed here:
Function for factorial in Python

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