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 以反向方法将开始和结束值写入控制台
我正在尝试使用递归来反转字符串,如下所示。
但是当我调用 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 以反向方法将开始和结束值写入控制台