递归结构
递归(recursion)是一种常见的解决问题的方法,即把问题逐渐简单化。
递归的基本思想就是“自己调用自己”,一个使用递归技术的方法会直接或者间接的调用自己。
递归结构包括两个部分:
- 定义递归头。(用来解决:什么时候不调用自身的方法。如果没有头,将陷入死循环)
- 递归体。(用来解决:什么时候需要调用自身的方法)
1 public static void main(String[] args) { 2 // test01(); 3 test02(); 4 } 5 6 static int a = 0; 7 8 public static void test02() { 9 a++; 10 System.out.println("test02:"+a); 11 if(a<11){//递归头 12 test02(); 13 }else{ 14 System.out.println("over"); 15 } 16 } 17 18 public static void test01() { 19 System.out.println("111111111"); 20 test01();//单纯这样的写会报java.lang.StackOverflowError栈溢出异常。 21 //调用自己时需要告知什么时候不调用了。 22 }
【递归算法实例1】阶乘:给定一个数值,计算出它的阶乘值,例如5的阶乘为5*4*3*2*1
1 public static void main(String[] args) { 2 3 System.out.println(factorial(5)); 4 } 5 6 7 public static long factorial(int n) { 8 if(n==1){ 9 return 1;//return的两个作用:①返回值;②结束方法运行 10 }else{ 11 return n*factorial(n-1); 12 } 13 }