A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王春蕾 中级黑马   /  2014-4-23 22:21  /  664 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我写了一个累加一个从0到指定值的求和的递归方法,代码如下:
  1.         public static int getSum(int maxValue) {
  2.                 if (maxValue == 1)
  3.                         return 1;
  4.                 else {
  5.                         return maxValue + getSum(maxValue-1);
  6.                 }
  7.         }
复制代码

运行可以得到正确的答案,但是我能不能把else里面的getSum(maxValue-1)改成getSum(maxValue--)呢?
改过运行时内存溢出,为什么不行啊?

点评

因为你没有-1的话,函数会一直和自己玩,当-1的时候,总会有一次return1;只要出了这个递归,就开始递增  发表于 2014-4-24 04:11

2 个回复

正序浏览
return maxValue + getSum(maxValue-1);这句话就是递归的体现
maxValue -1,就是说方法每次在调用自己的时候-1,也相当与一个循环
public static int getSum(int maxValue) {
         if (maxValue == 1)
                 return 1;
         else {
                 return maxValue + getSum(--maxValue); //你把后--改成前--就ok了
         }
}

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马