黑马程序员技术交流社区
标题:
这段代码中n--和n-1的区别是什么啊
[打印本页]
作者:
王睿
时间:
2012-2-26 00:06
标题:
这段代码中n--和n-1的区别是什么啊
本帖最后由 王睿 于 2012-2-27 16:23 编辑
class Sum
{
public static int getSum(int n)
{
if(n==1)
return 1;
else
{
return n+getSum(n-1);
}
}
public static void main(String[] args)
{
sop(getSum(10));
}
}
复制代码
这里n-1为什么不能换成n--?
该贴已经同步到 王睿的微博
作者:
H07000223
时间:
2012-2-26 00:23
本帖最后由 H07000223 于 2012-2-26 00:25 编辑
可以的,我试了下,应该是n和n--出现了矛盾,
至于更深层次我也不太清楚,不过还是弄出来:
public class Test_011
{
public static int getSum(int n)
{
if (n == 1)
return 1;
else
{
return n-- + getSum(n--);
}
}
public static void main(String[] args)
{
System.out.println(getSum(10));
}
}
复制代码
作者:
李晓俊老师
时间:
2012-2-26 00:31
很简单啊,n-1和n--明显不等同啊,一个是先减去1在参与运算,另外一个是先参与运算再减1
你把n--换成--n就行了,,,兄弟大意啊
作者:
许圣建
时间:
2012-2-26 02:06
具体代码且不说了,n--和n-1之间区别简直是天地之别了:
n=n-1和(n-1)能一样才怪了不是,一个改变了n的值,一个只是将(n-i)的结果传递给某个参数,甚至都不传递出去,只是运算一下,
如果要循环的话,前者会递归(不知道这个词用的对不,刚学到),后者始终不变化。
作者:
朱皓
时间:
2012-2-26 08:33
n--是先参与运算,后自减的啊,如果是n++ 那就是先参与运算,后自增的 啊
如果还不明白,想一想我们平时经常用到的for循环吧
for(int i=0;i<10;i++)
作者:
泮和顺
时间:
2012-2-26 08:47
这个循环调用函数还不如用for还做 呵呵
作者:
王--明
时间:
2012-2-26 09:24
你说这是递归里出现的小问题,n-1是先减去1在参与运算,n--是先参与运算再减1
至于为什么不能替换,你想啊,如果替换了,运行是没问题的。可结果可就大不一样了。
作者:
微博评论
时间:
2012-2-26 20:57
大哥,你介是发的嘛呀?[吃惊]
来自 锐睿forever 的新浪微博
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2