所以问题是这样的,我是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结束时,或者在这种情况下无关紧要?答案 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