java 中的乐趣(agr++)与乐趣(arg+1)

fun(agr++) vs fun(arg+1) in java

我正在尝试使用递归来反转字符串,如下所示。 但是当我调用 reverse(arr,start++,end--) 时,它给出了 Whosebug 错误。
我尝试使用 reverse(arr,start+1,end-1) 然后它工作正常。

public class Reverse {
    public static void main(String[] args) {
        char inp[] = "TestString".toCharArray();
        int n = inp.length;
        reverse(inp, 0,n-1);
        System.out.println(String.valueOf(inp));


    }
    public static void reverse(char[] arr, int start, int end){
        if(start>=end)
            return ;
        char tmp;
        tmp = arr[start];
        arr[start] = arr[end];
        arr[end] = tmp;
        reverse(arr,start+1,end-1);//error line

    }

reverse(arr,start++,end--)有什么问题? 我想知道为什么 start++ 和 end-- 的值不会传递给函数。

看看这个 SO 问题

SO post-increment-and-pre-increment-concept

Post

reverse(arr,start++,end--) 当你这样做时,incremented/decremented 值将不会传递给递归方法,这意味着你正在调用具有初始值的方法,并且最终导致 SO 错误

当您执行 reverse(arr,start+1,end-1)reverse(arr,++start,--end) 时,开始和结束的递增和递减值将传递给递归方法。

在 Eclipse 中调试时 IDE 如果不使用 IDE 在变量面板中检查开始和结束的值 IDE 以反向方法将开始和结束值写入控制台