有没有java大佬帮忙看代码?

//注释部分应该是一样的,但是结果不同。
public class _3_1 {
    static int sum = 0;
    public static void main(String[] args) {
        sum(4);
        System.out.println(sum);
    }
    static int sum(int n) {
        if (n == 1) {
            return 1;
        }
//        sum = sum + sum(n - 1);
        int a = sum(n - 1);
        sum += a;
        return n;
    }
}

全部评论
leetcode有两个大佬解答了,sum在表达式左边用寄存器保存了不会变而右边递归又更改了sum,导致结果不一样
点赞
送花
回复
分享
发布于 2022-03-02 16:13

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务