计算10的阶乘

一、不好的写法

java 复制代码
    public static void main(String[] args) {
        long fun = fun(10);
        System.out.println(fun);
    }

    public static long fun(long n) {
        if (n == 1) {
            return 1;
        }
        return n * fun(n - 1);
    }

使用递归完成需求,fun1方法会执行10次,并且第一次执行未完毕,调用第二次执行,第二次执行

未完毕,调用第三次执行...最终,最多的时候,需要在栈内存同时开辟10块内存分别执行10个fun1方法。

二、好的写法

java 复制代码
    public static void main(String[] args) {
        long fun = fun(10);
        System.out.println(fun);
    }


    public static long fun(long n) {
        int result = 1;

        for (int i = 1; i <= n; i++) {
            result *= i;
        }
        return result;
    }

使用for循环完成需求,fun2方法只会执行一次,最终,只需要在栈内存开辟一块内存执行fun2方法

即可。

相关推荐
cs8219848314 分钟前
QT 设置高DIP支持多分屏幕,window缩放比例问题等
开发语言·qt·依赖倒置原则
gxchai11 分钟前
用PythonSudio在控件中添加、删除控件,并传递参数(以ScrollBox中添加删除按钮为例)
开发语言·python
码上有前13 分钟前
Java高级教程:数据结构、集合框架、ArrayList与LinkedList深度解析
java·数据结构·python
榕树子24 分钟前
[java] 什么是 Apache Felix
java·开发语言·apache
极客先躯25 分钟前
高级java每日一道面试题-2024年11月23日-JVM篇-什么时候会出发FullGC?
java·jvm·fullgc·jvm篇·老年代内存不足·system.gc·减少full gc的策略
雯0609~32 分钟前
C#winform:连接mysql,并将数据展示到页面
开发语言·c#
@Crazy Snail32 分钟前
C# 多线程异步--Token
开发语言·c#·token·task
AICodeThunder34 分钟前
C++知识点总结(58):序列型动态规划
开发语言·c++·动态规划
飞滕人生TYF40 分钟前
斐波那契数列 相关问题 详解
java·数学·动态规划·递归·斐波那契数列
好玩的Matlab(NCEPU)40 分钟前
C#+数据库 实现动态权限设置
开发语言·数据库·c#