所以我们刚开始学习循环并得到了这个作业
def factorial_cap(num):
对于正整数n,n的阶乘(表示为n!)是乘积
从1到n的所有正整数的包含。实现返回最小的函数
正n等n!大于或等于参数num。
示例:
factorial_cap(20)
→4#3!< 20 but 4!> 20
factorial_cap(24)
→4#4!= 24
任何人都可以给我一个方向,从哪里开始?我很失落如何开始这个。我完全理解我的程序应该做什么,而不是如何启动它。
答案 0 :(得分:1)
将参数除以[1 ... n]。当数字变得小于除数时,除数就是答案。
20/1=20;
20/2=10;
10/3=3.33<4--------------4
30/1=30;
30/2=15;
15/3=5;
5/4=1.25<5---------------5
90/1=90;
90/2=45;
45/3=15;
15/4=3.75<5--------------5
900/2=450;
450/3=150;
150/4=37.5;
37.5/5=7.5;
7.5/6=1.25<7-------------7
该功能应该是这样的:
def factorial_cap(num):
c=1
while(c<num):
num=num/float(c)
c=c+1
return c
答案 1 :(得分:0)
在递归函数中有两个主要组件:
递归调用是从内部调用函数时,基本情况是函数返回/停止调用自身的位置。
对于递归调用,您需要n 阶乘(n-1),因为这实际上是阶乘的定义(n (n-1)(n-2)< /em>...*2)。遵循这个逻辑,基本情况应该在n == 2时。
祝你好运,希望我能指出你正确的方向。答案 2 :(得分:0)
一种简单的方法是计算每个整数的阶乘,从1(或0)开始,直到数字的阶乘大于或等于num
。
def factorial_cap(num):
number = 0
factorial = 1
while(factorial < num):
number += 1
factorial = factorial * number
return number
从number = 0
开始,我们知道0!是1,所以factorial = 1
。
使用while循环计算下一个数字的阶乘,将前一个阶乘乘以新数字(n! = (n - 1)! * n
),直到大于或等于num
,最后返回该数字。