用python启动循环

时间:2016-02-22 18:26:18

标签: python loops python-3.x functional-programming

所以我们刚开始学习循环并得到了这个作业

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

任何人都可以给我一个方向,从哪里开始?我很失落如何开始这个。我完全理解我的程序应该做什么,而不是如何启动它。

3 个答案:

答案 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)

在递归函数中有两个主要组件:

  1. 递归电话
  2. 基本情况
  3. 递归调用是从内部调用函数时,基本情况是函数返回/停止调用自身的位置。

    对于递归调用,您需要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,最后返回该数字。