Python 反阶乘函数?

Python 反阶乘函数?,python,algorithm,Python,Algorithm,所以问题是这样的,我是python新手: def factorial\u cap(num):对于正整数n,n的阶乘(表示为n!)是乘积 从1到n(含)的所有正整数。实现返回最小值的函数 正的n以至于n!大于或等于参数num。 o假设:num将始终为正整数 # Examples # factorial_cap(20) output is 4 since 3!<20 but 4!>20 # factorial_cap(24) output is 4 since 4!=24 # fac

所以问题是这样的,我是python新手:

def factorial\u cap(num):对于正整数n,n的阶乘(表示为n!)是乘积 从1到n(含)的所有正整数。实现返回最小值的函数
正的n以至于n!大于或等于参数num。 o假设:num将始终为正整数

# Examples 
# factorial_cap(20) output is 4  since 3!<20 but 4!>20
# factorial_cap(24) output is 4 since 4!=24
# factorial_cap(1) output is 1 since 1!=1

# And here is what I got

def factorial_cap(num):
    n = 1
    for i in range (1,num+1):
        n = n*i    
#示例
#阶乘_cap(20)的输出是4,因为3!20
#阶乘上限(24)的输出是4,因为4=24
#阶乘_cap(1)的输出是1,因为1=1.
#这是我得到的
def阶乘上限(num):
n=1
对于范围内的i(1,num+1):
n=n*i
我很确定这是阶乘def的正确函数。但我只是不明白,除了得到“总价值”,我怎么能像上面的例子那样得到正确的输出呢


顺便说一句,我应该在def末尾使用“return”,还是在这种情况下不重要

需要测试当前总数何时大于或等于请求的数字。因此,您可以使用while循环的条件来执行该检查,并递增一个计数器,
i
,该计数器跟踪当前迭代。然后返回产生值>=所需数字的
i
的当前值:

def factorial_cap(num):
    n = 1
    i = 1
    while n < num:
        i += 1   
        n *= i
    return i

>>> factorial_cap(20)
4
>>> factorial_cap(24)
4
>>> factorial_cap(25)
5
>>> factorial_cap(1)
1
>>> factorial_cap(3628800)
10
def factorial_cap(num):
n=1
i=1
当n>>阶乘上限(20)
4.
>>>阶乘上限(24)
4.
>>>阶乘上限(25)
5.
>>>阶乘上限(1)
1.
>>>阶乘上限(3628800)
10

需要测试当前总数何时大于或等于请求的数字。因此,您可以使用while循环的条件来执行该检查,并递增一个计数器,
i
,该计数器跟踪当前迭代。然后返回产生值>=所需数字的
i
的当前值:

def factorial_cap(num):
    n = 1
    i = 1
    while n < num:
        i += 1   
        n *= i
    return i

>>> factorial_cap(20)
4
>>> factorial_cap(24)
4
>>> factorial_cap(25)
5
>>> factorial_cap(1)
1
>>> factorial_cap(3628800)
10
def factorial_cap(num):
n=1
i=1
当n>>阶乘上限(20)
4.
>>>阶乘上限(24)
4.
>>>阶乘上限(25)
5.
>>>阶乘上限(1)
1.
>>>阶乘上限(3628800)
10

您想要退货,但这不是
n
,而是
i

def factorial_cap(num):

    n = 1
    i = 0

    while True:

        i += 1
        n = n*i
        if n >= num:
            break

    return i

print(factorial_cap(20))
print(factorial_cap(24))
print(factorial_cap(1))

您想要退货,但这不是
n
,而是
i

def factorial_cap(num):

    n = 1
    i = 0

    while True:

        i += 1
        n = n*i
        if n >= num:
            break

    return i

print(factorial_cap(20))
print(factorial_cap(24))
print(factorial_cap(1))

尝试在for循环之后使用
返回n
。同样在循环中,将
range(1,num+1)
更改为
range(2,num+1)
,您不必再将数字乘以1。@BasSwinckels当然是这样。顺便说一句,您可以使用斯特林近似进行“阶乘反转”:是的,
返回n
非常重要。这就像韦伯斯特写下一个词的定义,但不把它放在字典里。如果不返回它,
n
是无用的。请尝试在for循环之后使用
返回n
。同样在循环中,将
range(1,num+1)
更改为
range(2,num+1)
,您不必再将数字乘以1。@BasSwinckels当然是这样。顺便说一句,您可以使用斯特林近似进行“阶乘反转”:是的,
返回n
非常重要。这就像韦伯斯特写下一个词的定义,但不把它放在字典里。如果您不返回它,
n
是无用的。