python - 递归检测数字是否为阶乘

标签 python python-3.x function recursion factorial

需要创建一个函数来评估特定数字是否为阶乘。

为此,我构建了以下内容,并且它正在运行

def is_factorial(n):
    i = f = 1
    while f < n:
        i += 1
        f *= i
    return f == n

但是,现在我需要使它递归,但我正在为此苦苦挣扎。

到目前为止,我已经设法做到了以下几点

def isFactorial(m):
    def factorial(x):
        if x == 0:
            return 1
        else:
            return x * factorial(x - 1)
    
    if m == 1:
        return True 
    elif m == 720:
        return True
    else:
        factorialnumbers = []

感谢任何帮助。

编辑:抱歉,但我忘记指定该函数应仅将一个整数作为输入。

最佳答案

def is_factorial(n, i=1):
    n = n/i
    if n == 1:
        return True
    if n < 1:
        return False
    i += 1
    return is_factorial(n, i)


print(is_factorial(24))

关于python - 递归检测数字是否为阶乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70056707/

相关文章:

python - 将字符串作为参数传递会添加转义字符

python - 对包含 B 或 I 标签的连续单词进行分组

python - 为什么 Python 2.7 中的 dict 定义比 Python 3.x 中的更快?

javascript - 从按钮运行js函数并显示

javascript - 在 jQuery 中全局定义一个函数

c++ - 我应该通过 const-reference 传递 std::function 吗?

python - 如何多次迭代 ResultProxy?

python - 用户的字符串(例如段落)可以导入/输入到 PyGame 中吗?

python/django strptime "bad directive"

Python:无法从文件中替换行