Java递归

1 什么是Java递归

Java中的递归是一个过程,其中方法连续不断地调用自身。Java中调用自身的方法称为递归方法

它可以使代码紧凑且易于理解。

2 Java递归的语法

returntype methodname(){  
    //方法体
    methodname();//调用当前方法 
}  

3 Java递归的例子1

package com.yiidian;

/**
 * 一点教程网: http://www.yiidian.com
 */
public class Demo {
    static void p(){
        System.out.println("hello");
        p();
    }

    public static void main(String[] args) {
        p();
    }
}

输出结果为:

hello
hello
hello
hello
hello
...
Exception in thread "main" java.lang.StackOverflowError

4 Java递归的例子2

package com.yiidian;

/**
 * 一点教程网: http://www.yiidian.com
 */
public class Demo {
    static int count=0;
    static void p(){
        count++;
        if(count<=5){
            System.out.println("hello "+count);
            p();
        }
    }
    public static void main(String[] args) {
        p();
    }
}

输出结果为:

hello 1
hello 2
hello 3
hello 4
hello 5

5 Java递归的例子3

package com.yiidian;

/**
 * 一点教程网: http://www.yiidian.com
 */
public class Demo {
    static int factorial(int n){
        if (n == 1)
            return 1;
        else
            return(n * factorial(n-1));
    }

    public static void main(String[] args) {
        System.out.println("Factorial of 5 is: "+factorial(5));
    }
}

输出结果为:

Factorial of 5 is: 120

上面程序的运行过程分析:

factorial(5) 
   factorial(4) 
      factorial(3) 
         factorial(2) 
            factorial(1) 
               return 1 
            return 2*1 = 2 
         return 3*2 = 6 
      return 4*6 = 24 
   return 5*24 = 120

6 Java递归的例子4

package com.yiidian;

/**
 * 一点教程网: http://www.yiidian.com
 */
public class Demo {
    static int n1=0,n2=1,n3=0;
    static void printFibo(int count){
        if(count>0){
            n3 = n1 + n2;
            n1 = n2;
            n2 = n3;
            System.out.print(" "+n3);
            printFibo(count-1);
        }
    }

    public static void main(String[] args) {
        int count=15;
        System.out.print(n1+" "+n2);//打印0 和 1
        printFibo(count-2);//n-2,因为已经打印了2个数字
    }
}

输出结果为:

0 1 1 2 3 5 8 13 21 34 55 89 144 233 377

 

推荐好课