zoukankan      html  css  js  c++  java
  • 阶乘的实现

    一个数的阶乘

    当这个数 = 1的时候,算式为:1 * (1 - 0) = 1,所以1的阶乘就是1

    当这个数 = 2的时候,算式为:2! = 2 * 1 = 2 * (2 - 1) = 2,所以2的阶乘就是

    前2个数为特殊情况

    假设这个数为n

    n = 1n! = 1 * (1 - 0)

    n = 2n! = 2 * (2 - 1)

    n = 3n! = 3 * (3 - 1) * (3 - 2)

    ....等等等....

    由此引发出递归的思想

    public class Test {
        pulic static void main(String[] args) {
            System.out.println(5); // 120
        }
        
        public static int F(int n) {
        	// 首先来处理2个特殊情况
            if (n == 1) {
                // 如果 n 和 1 相等,直接返回结果为1
                return 1;
            }
            if (n == 2) {
                // 如果n 和 2 相等,直接返回结果为2
                return 2;
            }
            
            if (n > 2) {
                return n * F(n - 1);
            }
        }
    }
    

    上述还可以简化为

    public class Test {
        pulic static void main(String[] args) {
            System.out.println(5); // 120
        }
        
        // 因为这是在java语言中,需要返回值,所以更改之后写成这样
        public static int f(int n) {
            if (n == 1) {
                return 1;
            } else if (n == 0) {
                return 1;
            } else {
                return n * f(n - 1);
            }
        }
    }
    

    5代入的执行流程

    n = 5,第一个判断不执行,n现在是>=2的,就执行return n * F(n - 1);,这就相当于小时候的数学的方程式代入感一样,5代入,5 * F(4) , 这里的F(4)又是调用了一遍这个函数,F(4) = 4 * F(3),依次下去,就会最终变成5 * 4 * 3 * 2 * 1;

  • 相关阅读:
    js实现小球碰撞游戏
    jquery实现简易的计算器
    js中的substr和substring区别
    学习笔记:模拟退火
    解题报告:luogu P4879
    解题报告:CF58C
    解题报告:luogu P1160
    解题报告:CF1244D
    学习笔记:三分法(唔,好像不是唉)
    解题报告: CF1288C
  • 原文地址:https://www.cnblogs.com/wxvirus/p/12913904.html
Copyright © 2011-2022 走看看