给憨憨写的阶乘的实现


给憨憨写的阶乘的实现原理

一个数的阶乘

当这个数 = 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;


文章作者: virus
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 virus !
 上一篇
PHP性能如何优化 PHP性能如何优化
变量 变量的性能排行:局部变量 > 全局变量 > 类属性 > 未定义的变量 变量大小,注意变量大小是节约内存的最有效的手段。对于来自表单、数据库和文件缓存的数据都需要控制变量的大小
2020-05-22
下一篇 
Java内存分析 Java内存分析
Java内存分析 Java内存主要分为堆、栈和方法区 堆 存放new的对象和数组 可以被所有的线程共享,不会存放到别的对象引用 栈 存放基本变量类型(包含这个基本类型的具体数值) 引用对象的变量(会存放这个引用在堆里的具体地址)
2020-05-17
  目录