您好,登錄后才能下訂單哦!
這篇文章主要介紹java中怎么創建遞歸例子,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
創建java遞歸的方法:首先創建明確的遞歸結束條件;然后設置判斷條件,代碼為【private static int sumNum(int n){if (n == 1){return 1;}return n + sumNum(n-1)}】。
創建java遞歸的方法:
程序調用自身的編程技巧稱為遞歸( recursion)。遞歸做為一種算法在程序設計語言中廣泛應用。 一個過程或函數在其定義或說明中有直接或間接調用自身的一種方法,它通常把一個大型復雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解,遞歸策略只需少量的程序就可描述出解題過程所需要的多次重復計算,大大地減少了程序的代碼量。遞歸的能力在于用有限的語句來定義對象的無限集合。一般來說,遞歸需要有邊界條件、遞歸前進段和遞歸返回段。當邊界條件不滿足時,遞歸前進;當邊界條件滿足時,遞歸返回。
首先,我們來看一下最簡單的求和例子。
<span style="font-size:18px;">public static void main(String[] args) { System.out.println(sumNum(100)); //輸出:5050 } //求1-100的和 private static int sumNum(int n) { if (n == 1) { return 1; } return n + sumNum(n-1); }</span>
下面我們用遞歸實現斐波那契數列。
斐波那契數列,又稱黃金分割數列,指的是這樣一個數列:0、1、1、2、3、5、8、13、21、……在數學上,斐波納契數列以如下被以遞歸的方法定義:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)在現代物理、準晶體結構、化學等領域,斐波納契數列都有直接的應用。
//用遞歸求解 public static int fib(int n) { if (n == 0) return 0; if (n == 1 || n == 2) return 1; return fib(n - 1) + fib(n - 2); } //用循環求解 public static int fib2(int n) { int a = 0, b = 1, c = 1; if (n == 0) return 0; if (n == 1 || n == 2) return 1; for (int i = 0; i < n - 1; i++) { c = a + b; a = b; b = c; } return c; } //用數組求解 public static int fib3(int n) { int[] arr = new int[n + 1]; arr[0] = 0; arr[1] = 1; for (int i = 2; i <= n; i++) { arr[i] = arr[i - 1] + arr[i - 2]; } return arr[n]; }
下面再來看一下另外一個例子,計算階乘。
階乘是基斯頓·卡曼(Christian Kramp,1760~1826)于 1808 年發明的運算符號,是 數學術語。
一個正整數的 階乘( 英語: factorial)是所有小于及等于該數的 正整數的 積,并且有0的階乘為1。 自然數n的階乘寫作n!。 亦即n!=1×2×3×...×n。階乘亦可以 遞歸 方式定義:0!=1,n!=(n-1)!×n。
//用遞歸計算階乘 public static int jc(int n) { //結束條件 if ( n == 1) return 1; //遞歸條件 return n * jc(n-1); } //用for循環實現階乘 public static int jc2(int n) { int sum = 1; for (int i = 1; i <= n; i++) { sum *= i; } return sum; }
遞歸的條件:
1、 結束條件: 必須有一個明確的遞歸結束條件,稱為遞歸出口。
2、 遞歸條件: 遞歸的運算法則.
遞歸的特點:
1、簡潔明了: 遞歸算法,一般讓人一眼就能看出運算結構,很接近于數學自然語言。
2、內存消耗大:在遞歸調用的過程當中系統為每一層的返回點、局部量等開辟了棧來存儲。遞歸次數過多容易造成棧溢出等。所以一般不提倡用遞歸算法設計程序。
以上是java中怎么創建遞歸例子的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。