java中方法遞歸的簡單示例
一、遞歸的思路
一個方法在執(zhí)行時,調用自身被稱為“遞歸”。
遞歸相當于數(shù)學歸納法,有一個起始條件,有一個遞推公式。
遞歸可以分為:單路遞歸和多路遞歸(如二叉樹和斐波那契數(shù)列)。
二、代碼舉例
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、按照順序打印一個數(shù)字的每一位
//按照順序打印一個數(shù)字的每一位
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、輸入一個非負整數(shù),返回組成他的數(shù)字之和,如輸入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、求斐波那契數(shù)列的第n項
斐波那契數(shù)列: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的值越來越大時,程序運行的速度很慢,原因是進行了大量的重復運算。所以對于斐波那契數(shù)列,一般采用迭代的代碼版本。
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));
}
運行結果

需要注意的是,如果編譯時出現(xiàn)以下錯誤,說明棧溢出,要仔細檢查代碼的終止條件是否沒有寫或者寫錯。

總結
到此這篇關于java中方法遞歸的文章就介紹到這了,更多相關java方法遞歸內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java線程池submit阻塞獲取結果的實現(xiàn)原理詳解
Java線程池中提交任務運行,通常使用execute()方法就足夠了。那如果想要實現(xiàn)在主線程中阻塞獲取線程池任務運行的結果,該怎么辦呢?本文就來和大家一起討論討論2022-10-10
Jmeter基于JDBC請求實現(xiàn)MySQL數(shù)據(jù)庫測試
這篇文章主要介紹了Jmeter基于JDBC請求實現(xiàn)MySQL數(shù)據(jù)庫測試,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-10-10
使用AOP攔截Controller獲取@PathVariable注解傳入的參數(shù)
這篇文章主要介紹了使用AOP攔截Controller獲取@PathVariable注解傳入的參數(shù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08
Java經典算法匯總之選擇排序(SelectionSort)
選擇排序也是比較簡單的一種排序方法,原理也比較容易理解,選擇排序在每次遍歷過程中只記錄下來最小的一個元素的下標,待全部比較結束之后,將最小的元素與未排序的那部分序列的最前面一個元素交換,這樣就降低了交換的次數(shù),提高了排序效率。2016-04-04
netty對proxy protocol代理協(xié)議的支持詳解
這篇文章主要為大家介紹了netty對proxy protoco代理協(xié)議的支持詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-07-07
Java編程小實例—數(shù)字時鐘的實現(xiàn)代碼示例
正所謂拳不離手曲不離口,java學習的過程中,練習還是要多一點比較好。接下來分享給大家一個Java編程的小實例,供朋友們參考。2017-10-10

