我的递归出了什么问题?

时间:2012-04-30 00:04:59

标签: java recursion

我需要使用递归来实现我正在尝试实现的方法。问题是这里的递归不起作用,因为我认为它会。这是我的代码,我将在下面进一步解释。

    public void printer(int level) { 
    System.out.println("A Car " + getId());
    for (int j=0; j< carTypes.size(); j++) {

        carTypes.get(j).printer( Index.get(j)+1);
        if (carTypes.get(j) instanceof Toyota) {
            level = 1;
        }
        else {
            level = 1;
            for (int i = 0; i <= j; i++){
                if (j == Index.size()-1) 
                    break;
                if (Index.get(i) == Index.get(j+1)) {
                    number++;
                }
            }
        }
        System.out.println("Is recursion working right?");

    }//End of for loop
}

我遇到的问题是我希望carTypes.get(j).printer(Index.get(j)+1)之后的所有内容;将被忽略,方法将循环。我知道如果发生这种情况,我将不得不寻找另一个来处理我的for循环但是现在,我只是希望递归工作。我不完全确定我提供的信息是否足够,如果你需要更多信息,我会很乐意提供更多信息。

谢谢

1 个答案:

答案 0 :(得分:2)

递归:从自身调用方法。

现在,carTypes.get(j).printer( Index.get(j)+1);此行每次都调用打印机方法,但是在不同的对象上。

所以,实际上你并没有调用相同的printer方法,因此没有发生递归。

编辑:

  

我知道如果发生这种情况,我将不得不找另一个来处理我的for循环但是现在,我只是希望递归工作。

替换

carTypes.get(j).printer( Index.get(j)+1);

printer( Index.get(j)+1);