提问者:小点点

前后递增运算符在递归中不起作用


我有以下几点:

public static void main(String[] args){
        Screen.clear();
        System.out.println(depth(5,0));
        
    }

public static int depth(int n, int depth){
        System.out.println(depth);
        if(n == 0)return depth;
        else{
           System.out.println(depth);          
           return depth(n-1, depth++);
        }
        
    }

为什么这总是打印出0,n次?为什么深度没有增加?


共1个答案

匿名用户

你没有预递增。您的函数在递增之前传递0,因此实际上没有递增。试试这个:

public static void main(String[] args){
        Screen.clear();
        System.out.println(depth(5,0));
        
    }

public static int depth(int n, int depth){
        System.out.println(depth);
        if(n == 0)return depth;
        else{
           System.out.println(depth);          
           return depth(n-1, ++depth);
        }
    }

或者(如果你想使用后置增量)

public static void main(String[] args){
        Screen.clear();
        System.out.println(depth(5,0));
        
    }

public static int depth(int n, int depth){
        System.out.println(depth);
        if(n == 0)return depth;
        else{
           System.out.println(depth++);          
           return depth(n-1, depth);
        }
    }