請問大家java中遞歸演算法希望有詳細解釋
請問大家java中遞迴演算法希望有詳細解釋
public class Test{
public static int getResult(int parameter) {
if (parameter == 0) { return result; } else { result *= parameter; return recursiveFunction(parameter - 1, result); }
return number;
}
public static void main(String[] args) { // 在這裡寫你的程式碼 }
int result = result(5);
System.out.println(result);
}
}
它的執行原理是如下這樣的:
result(5) 初始時,進入函數體判斷parameter是否小於等於1,此時parameter等於5,條件不成立,執行parameter*result(parameter-1),即5 * result(5-1),程序反覆執行...
5*result(5-1)
4*result(4-1)
3*result(3-1)
2 * result(2 - 1) 到此 parameter 等於 1 符合條件,函數傳回 1,層層傳回。即:
result(1) =1
2*result(1)=2*1=2
3*result(2)=3*2=6
4*result(3)=4*6=24
5*result(4)=5*24=120
java中用遞歸方法n個數的無重複全排列 n 3
程式如下所示,輸入格式為:
5
3 1 2 1 2的意思是,第一行是一個數字,表示接下來要輸入的數字個數。第二行有n個數,表示待排列的數,輸入假設待排序的數均為非負數。
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
static final int maxn = 1000;
int n; // 陣列元素個數
int[] a; // 陣列
boolean[] used; // 輔助變量,在遞歸過程中標記元素是否已被使用,used[i]表示第i個元素是否已使用
int[] cur; // 儲存目前的排列數
// 遞歸列印無重複全排列,目前列印到第idx位元
void print_comb(int idx) {
如果 idx == n,表示目前已經遍歷到了最後一個元素,可以將cur輸出。
for(int i = 0; i
if(i > 0) System.out.print(" ");
System.out.print(cur[i]);
}
System.out.println();
}
int last = -1; // 為了避免重複,使用last變數來記錄上一次搜尋的值
for(int i = 0; i
if(used[i]) continue;
if(last == -1 || a[i] != last) { // 只有噹噹前數字不重複且未被使用過時,才繼續遞歸下去
last = a[i];
cur[idx] = a[i];
// 回溯法
used[i] = true;
print_comb(idx 1);
used[i] = false;
#}
}
}
public void go() throws FileNotFoundException { // 實作方法體 }
{
Scanner in = new Scanner(new File("data.in"));的語法是建立一個名為in的Scanner對象,用於從名為data.in的檔案中讀取輸入。
// 讀取資料並排序
n = in.nextInt();
a = new int[n];
for (int i = 0; i
Arrays.sort(a);
// 初始化輔助變數並開始無重複全排列
cur = new int[n];
used = new boolean[n];
for(int i = 0; i
print_comb(0);
in.close();
}
public static void main(String[] args) throws FileNotFoundException { 這是一個Java程式中的主方法,用來啟動程式的入口。在這個方法中,我們可以執行一些操作,例如讀取文件,處理資料等。 其中,throws FileNotFoundException 表示執行過程中可能會出現檔案找不到的異常,如果出現了這個異常,程式將會拋出 FileNotFoundException 例外。 在這個方法中,你可以寫特定的程式碼邏輯,處理檔案的讀取和異常的處理。
new Main().go();
}
}客觀來說,非遞歸的無重複全排列比較簡單且有效率。
java中遞歸的作用是什麼?為什麼要用到遞迴
你的兩個問題其實是一個問題,對吧。
遞歸的作用:遞歸演算法可以解決一些透過遞歸定義的題目。
首先,我們要先理解什麼是遞歸定義的問題。簡單來說,遞歸定義的問題是指一個大問題中包含了與其結構相同但規模較小的小問題。
例如n階乘的定義可以理解為:
n!= n*(n-1)!
從上述分析不難得出,(n-1)! 是比 n! 規模更小的問題。按照此方法不斷將問題分解下去,我們可以得到一些基本已知的數據。然後,透過反向推導,我們就能得到最終的結果。
n的階乘演算法如下:
private static int jieCheng(int n) { 這是一個計算階乘的方法,其中參數n表示要計算階乘的數值。以下是具體的解釋: - "private"表示方法僅在目前類別中可見,其他類別無法存取。 - "static"表示方法是靜態方法,可以直接透過類別名稱調用,而不需要實例化物件。 - "int"表示方法傳回一個整數值作為結果。 - "jieCheng"是方法的名稱,可以根據需要進行命名。
if(n == 1)
return 1;
else {
return n*jieCheng(n-1);
}
}
此外,二元樹的定義也是遞歸的,這意味著許多二元樹的操作都是透過遞歸來實現的。
用遞迴會使程式相當簡潔。
java中遞歸的應用! f20 1 f21 4 fn 2 2 fn 1 fn其中
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
publicclassTest {
publicstaticintf(intn){
#if(n==20){
return1;
}elseif(n==21){
return4;
}elseif(n
returnf(n 2)-2*f(n 1);
}else{
return2*f(n-1) f(n-2);
}
}
public static void main(String[] args) {
System.out.println(f(10)); //印出f(10)的值
}
}
已經經過測試,在main函數中輸入f(n),其中n為手動調整的參數,即可獲得對應的輸出結果。
以上是請問大家java中遞歸演算法希望有詳細解釋的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

蒸汽雲錯誤可能是由於許多原因引起的。要順利玩遊戲,您需要採取一些措施來刪除此錯誤,然後才能啟動遊戲。 PHP.CN軟件在這篇文章中介紹了一些最佳方法以及更多有用的信息。

您可能會看到“無法建立與Windows Metadata和Internet Services(WMI)的連接”。事件查看器的錯誤。 PHP.CN的這篇文章介紹瞭如何刪除Windows元數據和Internet服務問題。

KB5035942更新問題 - 用戶通常發生崩潰系統。受到的人們希望找到擺脫困境的出路,例如崩潰系統,安裝或聲音問題。針對這些情況,這篇文章由Php.cn Wil發表

如果您在計算機上有一個名為PC App Store的程序,並且沒有故意安裝它,則可能會感染惡意軟件。 PHP.CN的這篇文章介紹瞭如何刪除PC App Store惡意軟件。

OneDrive是Microsoft的在線雲存儲服務。有時,您可能會發現OneDrive無法將照片上傳到雲。如果您在同一條船上,請繼續閱讀PHP.CN軟件的帖子,以獲取有效的解決方案!

Chris Titus Tech具有稱為Windows實用程序的工具,可以幫助您輕鬆地創建Debloated Windows 11/10 ISO安裝乾淨的系統。 PHP.CN提供了有關如何使用Chris Titus工具完成此操作的完整指南。

兄弟是:兩個兒子重製的故事沒有發起嗎?遇到兄弟:兩個兒子重製黑屏的故事?在這裡,有關PHP.CN的這篇文章為您提供了測試的解決方案,以幫助您解決此問題。

您是否質疑Msconfig不斷恢復到窗口上的選擇性啟動的問題?如果需要,如何切換到普通啟動?嘗試在此php.cn帖子中解釋的方法,以找到適合您的方法。
