解决方案 »

  1.   

    有数据结构和算法一书,在网上随随便便一找,到处都是,推荐看一下,也有专门用java来讲的,希望对你有帮助
      

  2.   

           对许多人而言,理解递归的最好方法是从简单的数学函数开始。因为数学函数中递归结构直接能从问题的陈述中得到,并且可以很容易地看到;
           在这些数学函数中,最常见的就是阶乘函数——在数学中的传统表示为 n!——它被定义为 1 到 n 之间的所有整数的连乘积;
    int fun(int n)
    {    
     if (n==1)             
         return 1;        
     else             
         return fun(n-1)*n; 
    }
      

  3.   

    要求数组的全排列这样子考虑,固定一个数,求子数组的全排列,比如固定1,那么要求2,3,4的全排列,子数组又可以当做一个新的数组用上面的方法,固定2,求3,4的全排列,以此类推。接下来确定循环的次数,数组为1,2,3,4时,需要分别固定1,2,3,4,所以循环4次,同理子数组分别循环3,2,1次,可以发现循环次数即为数组的元素个数这个规律。这个递归的终止条件就是到达循环次数后跳出方法至上层方法,继续外层循环。说白了,递归就是有规律地将一个算法切割成同等规律的子算法重复运算,达到终止条件后返回上层方法。楼主可以debug查看数据变化情况,这样好理解。