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.以此類推