递归:就是函数自己调用自己。 对于递归要分清以下概念:
自己调用自己递归通常不在意具体操作,只关心初始条件和上下层的变化关系。递归函数需要有临界停止点,即递归不能无限制的执行下去。通常这个点为必须经过的一个数。递归通常能被其他方案替代(栈、数组正向求)。认识递归,递归函数通常简易但是对于初学者可能很难取理解它。拿一个递归函数来说。
static void digui() { System.out.println("bigsai前"); digui(); System.out.println("bigsai后"); }如果不是正常递归,没有结束条件,自己调用自己一律是死循环。 正确的递归应该这样:
static void digui(int time) { if(time==0) {}//time==0不执行 else { System.out.println("bigsai前time: "+time); digui(time-1); System.out.println("bigsai后time: "+time); } }求 n!=n*(n-1)*-----1=n!=n(n-1)! 所以阶乘的上下级的关系很容易找到。我们假设一个函数jiecheng(n)为求阶乘的函数。 这个阶乘,你可以这样命名:
static int jiecheng(int n) { if(n==0)//0的阶乘为1 { return 1; } else { return n*jiecheng(n-1);//return n*(n-1)*jiecheng(n-2)=------- } }