程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> 算法 遞歸 數據結構-求解釋代碼,添加注釋或者畫圖解釋(在網上看到的求組合的遞歸算法,繞暈頭了看不懂,求解釋)

算法 遞歸 數據結構-求解釋代碼,添加注釋或者畫圖解釋(在網上看到的求組合的遞歸算法,繞暈頭了看不懂,求解釋)

編輯:編程解疑
求解釋代碼,添加注釋或者畫圖解釋(在網上看到的求組合的遞歸算法,繞暈頭了看不懂,求解釋)

public class Test1 {

public static void main(String[] args) {
select(2);
}

private static void select(int k) {
char[] result = new char[k];
subselect(0, 1, result, k);

}

private static void subselect(int head, int index, char[] r, int k) {
for (int i = head; i < a.length + index - k; i++) {
if (index < k) {
r[index - 1] = a[i];
System.out.println("i="+(i)+";index="+(index));
subselect(i + 1, index + 1, r, k);
} else if (index == k) {
r[index - 1] = a[i];
System.out.println(";i="+(i)+";index="+(index)+";index==k:"+(index==k));
System.out.print(i+"===");
System.out.println(r);
subselect(i + 1, index + 1, r, k);
} else {
System.out.println("++");
return;//返回到何處?奇怪
}

}
}

private static char[] a = { 'a', 'b', 'c' };
}

最佳回答:


return; 就是代表此函數執行結束了,在你這兒代表當時執行的subselect函數結束了,如果你的if else,或者for() 之後有代碼,返回之後執行之後的代碼,不過是你上一個subselect的代碼,好比是每個函數都必須執行12345,3處遞歸了,return之後,執行上一個函數的45.以此類推

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved