黑马程序员技术交流社区
标题:
关于迭代的一个小例子
[打印本页]
作者:
沫然
时间:
2014-5-5 16:13
标题:
关于迭代的一个小例子
本帖最后由 沫然 于 2014-5-6 06:54 编辑
public class Count {
public static void main(String[] args) {
count(1);
}
private static void count(int n) {
if(n<10) {
count(n+1);
}
System.out.println(n);
}
}
复制代码
谁能帮我解释一下打印结果为什么是10到1,而不是1到10?
作者:
徘徊消逝中
时间:
2014-5-5 16:27
private static void count(int n) {
if(n<10) {
count(n+1);
}
System.out.println(n);
}
看你的方法,每次调用的时候,先执行 count(n+1)这一句,则调到了下一层这个函数中,System.out.println(n);还是没有执行,但是调用已经有n+1了,所以最先打印的是10,如果下面么这样修改,就是先打印1
private static void count(int n) {
System.out.println(n);
if(n<10) {
count(n+1);
}
}
作者:
赵连明
时间:
2014-5-5 16:29
递归输出就相反的
判断n=1 执行reverse n=2
判断n=2 执行reverse n=3
判断n=3 执行reverse n=4
......
判断n=9 执行reverse n=10
判断n=10直接返回
输出10
输出9
......
输出3
输出2
输出1
作者:
heima_xyu
时间:
2014-5-5 16:37
count(int n)方法用到了递归。
1.来一步步执行,首先count函数传入int型的值1带入n,它满足if(n<10),然后执行count(n+1)
2.即执行count(2),不会执行到 System.out.println(n);语句。
3.类似第一步,传入2代入n,执行count(2+1),不会执行到 System.out.println(n);语句。
4.以此类推,当n=9,满足if(n<10),,执行count(9+1).不满足(n<10),条件,可以执行System.out.println(n)
count(10)执行结束,则count(9)的打印语句输出,然后分别输出count(8)......count(1)的System.out.println(n)
语句。
递归会开拓很大一片内存,一般少用。
用画图工具来解释应该能更清晰明白些,呵呵。
作者:
yemenglin
时间:
2014-5-5 16:40
递归调用,只要满足条件的情况下 即n<10的时候,if(n<10){count(n+1);}这段代码会重复执行,直到n=10时候才会跳出这段代码执行System.out.println(n)打印出10,依次类推,你可以调断点看看程序是怎么执行的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2