java中方法遞迴的簡單示例
阿新 • • 發佈:2020-12-08
一、遞迴的思路
一個方法在執行時,呼叫自身被稱為“遞迴”。
遞迴相當於數學歸納法,有一個起始條件,有一個遞推公式。
遞迴可以分為:單路遞迴和多路遞迴(如二叉樹和斐波那契數列)。
二、程式碼舉例
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)); }
執行結果
需要注意的是,如果編譯時出現以下錯誤,說明棧溢位,要仔細檢查程式碼的終止條件是否沒有寫或者寫錯。
總結
到此這篇關於java中方法遞迴的文章就介紹到這了,更多相關java方法遞迴內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!