递归方法调用倒底是怎么样的逻辑啊?public class ou {
static int s=0;
public void osi(int i ){
if(--i>0){
System.out.print(i+"#");//第一个打印语句
this.osi(i);
System.out.print(i+"*");//第二个打印语句
}
}
public static void main(String args[]){
ou o=new ou();
o.osi(10);
}
}按照我的学java的思路:参数10传入if语句,每执行一次 i减去1,然后执行第一个打印语句,再执行this.osi(i);然后跳出if语句,如此执行到i==1 if条件就不在成立了,那就跳出了if的范围.第二个打印语句应该从来没有执行到过,但这个程序的运行结果却是
9#8#7#6#5#4#3#2#1#1*2*3*4*5*6*7*8*9* 百思不得其解,请高手指教下.
static int s=0;
public void osi(int i ){
if(--i>0){
System.out.print(i+"#");//第一个打印语句
this.osi(i);
System.out.print(i+"*");//第二个打印语句
}
}
public static void main(String args[]){
ou o=new ou();
o.osi(10);
}
}按照我的学java的思路:参数10传入if语句,每执行一次 i减去1,然后执行第一个打印语句,再执行this.osi(i);然后跳出if语句,如此执行到i==1 if条件就不在成立了,那就跳出了if的范围.第二个打印语句应该从来没有执行到过,但这个程序的运行结果却是
9#8#7#6#5#4#3#2#1#1*2*3*4*5*6*7*8*9* 百思不得其解,请高手指教下.
解决方案 »
- java.lang.NullPointerException at android.graphics.Canvas.throwIfRecycled
- (高分)跪求格式转换器核心思想和核心代码
- java编码
- 正则表达式
- 如何将整型数值转化为字符型
- 如何用ANTLR来从Java源文件中获得一个class/interface的全部field或method的名字?
- 为记事本添加网络功能,可否??
- synchronized块的问题,求解救
- 方法的返回值可以是一个数组吗?在线等待
- 请问哪个版人气最旺,我想问一个关于VSS的问题。
- 如何做出登陆时的那个滚动框,就是向登陆其他一些网站或登陆系统一样,输入用户名跟密码后出现的那个缓冲框!!!还有怎样使多行文本框(JTextArea)不能直接写入,就像QQ显示聊天内容的一样!!
- 请问有使用过substance L&F么? 在其中使用JFileChooer出错
1.首先楼主要明白,
第一个打印语句和第二个打印语句在同一个{ }内,中间尽管有一个this.osi(i);
但执行完这个调用后,第二个打印语句就会执行,并且打出来的i值和第一条打印语句的i是相同的
2.递归的理解:
简单的说就是若干次重复使用,可以看错是嵌套,一个球里还有小球,小球里面还有更小的球,哈哈
3.还不能理解的话,建议自己动手去写一个简单的算法
比如:汉诺塔
当i等于1时,条件为假,返回一层一层往上返回,所以是1*2*3*4*5*6*7*8*9*。