Java應用遞歸處理算法成績的實例講授。本站提示廣大學習愛好者:(Java應用遞歸處理算法成績的實例講授)文章只能為提供參考,不一定能成為您想要的結果。以下是Java應用遞歸處理算法成績的實例講授正文
說明:法式挪用本身的編程技能叫做遞歸。
法式挪用本身的編程技能稱為遞歸( recursion)。遞歸做為一種算法在法式設計說話中普遍運用。 一個進程或函數在其界說或解釋中有直接或直接挪用本身的一種辦法,它平日把一個年夜型龐雜的成績層層轉化為一個與原成績類似的范圍較小的成績來求解,遞歸戰略只需大批的法式便可描寫出解題進程所須要的屢次反復盤算,年夜年夜地削減了法式的代碼量。遞歸的才能在於用無限的語句來界說對象的無窮聚集。
遞歸的三個前提:
1.界限前提
2.遞歸進步段
3.遞歸前往段
當界限前提不知足時,遞歸進步;當界限前提知足時,遞歸前往。
上面經由過程兩個示例法式來講明:
1.應用Java代碼求5的階乘。(5的階乘=5*4*3*2*1)
package org.wxp.recursion; /** * 盤算5的階乘(result = 5*4*3*2*1) * @author Champion.Wong */ public class Test01 { public static void main(String[] args) { System.out.println(f(5)); } public static int f(int n) { if (1 == n) return 1; else return n*(n-1); } }
此題中,依照遞歸的三個前提來剖析:
(1)界限前提:階乘,乘到最初一個數,即1的時刻,前往1,法式履行究竟;
(2)遞歸進步段:以後的參數不等於1的時刻,持續挪用本身;
(3)遞歸前往段:從最年夜的數開端乘,假如以後參數是5,那末就是5*4,即5*(5-1),即n*(n-1)
2.應用Java代碼求數列:1,1,2,3,5,8......第40位的數
package org.wxp.recursion; /** * 求數列:1,1,2,3,5,8......第40位的數 */ public class Test_02_Fibonacci { public static void main(String[] args) { System.out.println(f(6)); } public static int f(int n ) { if (1== n || 2 == n) return 1; else return f(n-1) + f(n-2); } }
3.成績描寫:求解Fibonacci數列的第10個地位的值? (斐波納契數列(Fibonacci Sequence),又稱黃金朋分數列,指的是如許一個數列:1、1、2、3、5、8、13、21、……在數學上,斐波納契數列以以下被以遞歸的辦法界說:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*))
法式清單:
/** *<p>Title:Java遞歸算法實例</p> *<p>Description:應用遞歸算法求解Fibonacci數列第5個數的值</p> *<p>Filename:Fibonacci.java</p> */ public class Fibonacci { /** *辦法描寫:求解Fibonacci數列的遞歸算法 *輸出參數:int n *前往類型:int */ public static int fun(int n) { if(1==n || 2==n) { return 1; } else { return (fun(n-1) + fun(n-2)); } } /** *辦法描寫:主辦法 *輸出參數:String[] args *前往類型:void */ public static void main(String[] args) { System.out.println(fun(10)); } }
運轉成果以下所示:
55