有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我的递归怎么了?

我需要使用递归来定义我试图实现的方法。问题是这里的递归并不像我想象的那样有效。这是我的代码,我将在下面进一步解释

    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
}

我现在的问题是,我希望在卡式打印之后,一切都会恢复。得到(j)。打印机(索引get(j)+1);将被忽略,并且该方法将被循环。我知道如果发生这种情况,我将不得不找到另一个来处理for循环,但现在,我只希望递归能够工作。我不完全确定我提供的信息是否足够,因此如果您需要更多信息,请询问我,我很乐意提供更多信息

谢谢


共 (1) 个答案

  1. # 1 楼答案

    递归:从自身调用方法

    现在,carTypes.get(j).printer( Index.get(j)+1);这一行每次都在不同的对象上调用printer方法

    因此,事实上,您并没有调用相同的printer方法,因此没有发生递归

    编辑:

    I know if this happens, I will have to find another to deal with my for loop but for now, I just want the recursion working.

    替换

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

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