搜尋
首頁JavaJava基礎java遞歸簡單例子如何創建

建立java遞歸的方法:先建立明確的遞迴結束條件;然後設定判斷條件,程式碼為【private static int sumNum(int n){if (n == 1){return 1;}return n sumNum(n-1)}】。

java遞歸簡單例子如何創建

建立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基礎教學

#

以上是java遞歸簡單例子如何創建的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器