为什么不起作用?有人可以解释堆栈中使用的内存分配、静态/非静态、全局/局部变量/深度复制

问题描述 投票:0回答:0

一个简单的递归函数,将数组元素反向打印

当我调用 print 语句上方的函数时,它给我索引 -1

outOfBoundException
。 当我在调用该函数之前打印时,它似乎有效。我想这与变量的深层复制有些相关,但我不知道正确的解释。有人可以给我提供合适的答案吗?

 int[] arr = {1,2,3};
 int n = arr.length;
 print(arr,n-1);

这给出了错误:

public static void print(int[] arr, int n)
    {
        if(n<0)
            return;

        print(arr,--n);
        
        System.out.println(arr[n]);
    }

这不是:

public static void print(int[] arr, int n)
    {
        if(n<0)
            return;
        
        System.out.println(arr[n]);

        print(arr,--n);
    }
java recursion stack tail-recursion
© www.soinside.com 2019 - 2024. All rights reserved.