1、问题:我写了一个递归调用函数,用于对数组前后元素进行倒置,如下(下面代码有误)
//数组倒置
void reverse(int* arr, int first,int last) {
if (first >= last) return;
mySwap(arr[first],arr[last]);//数据交换函数
reverse(arr, first++, last--);//这儿有问题
}
现象:编译没有问题,运行后程序停止!
2、原因分析:因为变量++或--是先运行函数后再++或--,与我期望的完全不同。
3、解决方法:把first++改成++first,last--改成--last。这样就可以先进行参数计算再执行函数。
//数组倒置
void reverse(int* arr, int first,int last) {
if (first >= last) return;
mySwap(arr[first],arr[last]);
reverse(arr, ++first, --last);//改成++,--变量的函数
}