前置自增与后置自增(数组倒置)

  今天用线性递归写了一段数组倒置的代码,结果提示溢出,源代码如下:

  //递归数组反转
    public static void inverseArray(int[] arr,int m,int n){
        if(m>=n){
            return;
        }
        int temp=arr[m];
        arr[m]=arr[n];
        arr[n]=temp;
        inverseArray(arr,m++,n--);
    }

调试的时候发现,每次递归时,m和n的值并没有按照预期增减,反倒是保持不变。原因在于:前置自增和后置自增的区别。

  前置自增和后置自增:虽然两者都是对操作数加1,但是,前置自增返回加1后的结果,而后置自增的返回值仍然是原操作数。

  修改后的程序如下:

public static void inverseArray(int[] arr,int m,int n){
        if(m>=n){
            return;
        }
        int temp=arr[m];
        arr[m]=arr[n];
        arr[n]=temp;
        inverseArray(arr,++m,--n);
    }

  为什么是C++,而不是++C。参考:http://www.cnblogs.com/kira2will/p/3550013.html

 

posted @ 2016-07-29 10:29  lz3018  阅读(506)  评论(0编辑  收藏  举报