强迫症的小懒人
2017-12-24 14:32
采纳率: 16.7%
浏览 1.2k
已采纳

java中关于 ++ 运算符的问题

例如定义了一个方法public static int sum(int n),
递归调用时写成return n + sum(n--);运行时为何会出错,而写成 return n + sum (n-1);时运行结果正常?

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • jianpuhong2557 2017-12-24 14:38
    已采纳

    n--先进行sum(n)之后n-1,陷入死循环,换成--n试试?

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 与太阳肩并肩丶 2017-12-24 14:49

    --会在运算完成之后对数据进行减操作 而 n-1则直接会对n数据进行减1

    评论
    解决 无用
    打赏 举报
  • sunlei_secret 2017-12-24 14:56

    问题中n--执行的时候,由于自减运算符--在变量n的后面,所以是先使用变量n,传递给sum(n)然后n再自减1;
    假如你最初传入的n=5,那么return n+sum(n--)这句话中传入sum函数的n一直都是5不变,程序肯定执行不完了,就会报溢出错误,此时n的自减已经没有了意义。
    自增++和自减--运算符的用法你要弄清楚。

    评论
    解决 无用
    打赏 举报
  • Moo先生 2017-12-24 15:24

    public static int sum(int n){
    if(n==0){
    return 1;
    }
    return n + sum(n-1);
    }

    评论
    解决 无用
    打赏 举报
  • 馍馍菜 2017-12-25 02:39

    --若在n前,n值先运算,再运算;若--在n后面,先运算,n值再--。

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题