无论如何反向因子函数?

时间:2016-02-27 10:55:08

标签: python algorithm

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

def factorial_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    

我很确定这是因子def的正确功能。但我无法弄清楚,而不是得到总价值&#39;,如何在上面发布的示例中获得正确的输出?

是的,我应该使用&#39; return&#39;在def结束时,或者在这种情况下无关紧要?

3 个答案:

答案 0 :(得分:2)

需要测试当前总数何时大于或等于请求的数量。因此,您可以使用while循环的条件来执行该检查,并递增计数器i,以跟踪当前迭代。然后,问题是返回产生值&gt; =所需数字的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

答案 1 :(得分:0)

您想要退货但不是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))

答案 2 :(得分:-3)

您希望此时使用递归,因为它可以让您轻松 -

def fact(n):
  print(factorial(n))

def factorial(n):
   if n==0 or n==1:
      return 1
   else:
      return n*factorial(n-1)



And sample run for n=5 is:
>>120