public class Smile {
        private Smile leftSmile;
private Smile rightSmile;
...
public Smile(...){
        ...
if(...)   return;

leftSmile=new Smile(...);
....
rightSmile=new Smile(...);
....
}
问题:执行过程是怎么样的,具体疑惑是:当第一个递归到达临界条件返回后,执行下一个这个递归,也就是rightSmile的初始化,当这个初始化进行到这句leftSmile=new ..;这句时应该是跳过的吧?当这一次执行完毕后(因为条件限制,它直接return),第二次执行rightSmile=new...时,由于这时它的条件允许它递归,那么是否会调用呢?如果调用了,那么将会再一次对相同条件下,对同一个对象进行初始化...这显然是违反常理的?不知哪位知道实际调用过程?
谢谢——————

解决方案 »

  1.   

    这么说吧,一般递归都是有一个结束条件的 举个最简单的例子:递归求N的阶乘,都知道但N=0或者1的时候,阶乘就是1了,其他的时候都要递归,递归成N*(N-1)的阶乘   你这个if判断就是终结条件 我这只是简单的一说   具体还要看你代码了
      

  2.   

    这是一个后根遍历二叉树的递归实现,先左结点,再右结点,再根结点,对象只有在构造方法完成后才创建完成,记住这点就行了。if后面的条件为true表示当前结点没有左右子结点。