1. 程式人生 > 其它 >java中的方法遞迴

java中的方法遞迴

技術標籤:javajava

JAVA中的方法遞迴

  • 遞迴的思路
  • 程式碼舉例

一、遞迴的思路

一個方法在執行時,呼叫自身被稱為“遞迴”。
遞迴相當於數學歸納法,有一個起始條件,有一個遞推公式。
遞迴可以分為:單路遞迴和多路遞迴(如二叉樹和斐波那契數列)。

二、程式碼舉例

1、n的階乘

 //n的階乘
    public static int fac(int num){
        if(num == 1){
            return 1;
        }
        return num * fac(num-1);
    }
    public static void
main(String[] args) { int n = 5; System.out.println("result = " + fac(n)); }

執行結果
在這裡插入圖片描述
2、按照順序列印一個數字的每一位

  //按照順序列印一個數字的每一位
    public static void print(int n){
        if( n > 9 ){
            print( n / 10);
        }
        System.out.print( n % 10 );

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

執行結果在這裡插入圖片描述
3、輸入一個非負整數,返回組成他的數字之和,如輸入1729,則返回1+7+2+9=19

public static int sum(int n){
       if(n < 10){
           return n;
       }
       return n %10 + sum( n/10 );

    }
    public static void main(String[] args) {
        int n = 525615;
        int
ret = sum( n); System.out.println("the sum of "+n +" = "+ ret); }

執行結果
在這裡插入圖片描述
4、求斐波那契數列的第n項
斐波那契數列:1 1 2 3 5 8 13

 public static int fib(int n){
       if(n == 1 || n == 2){
           return 1;
       }
       return fib(n - 1) + fib(n - 2 );
    }
    public static void main(String[] args) {
        System.out.println(fib(10));
    }

執行結果在這裡插入圖片描述
**注意:當n的值越來越大時,程式執行的速度很慢,原因是進行了大量的重複運算。所以對於斐波那契數列,一般採用迭代的程式碼版本。

public static int fib(int n){
       int n1 = 1;
       int n2 = 1;
       int num = 0;
       for( int i=3; i<=n ;i++){
           num = n1 + n2;
           n1 = n2;
           n2 = num;
       }
       return num;
    }
    public static void main(String[] args) {
        System.out.println(fib(10));
    }

執行結果在這裡插入圖片描述

  • 需要注意的是,如果編譯時出現以下錯誤,說明棧溢位,要仔細檢查程式碼的終止條件是否沒有寫或者寫錯。
    在這裡插入圖片描述