求递归算法代码详细注释
这是一个组合的例子,它所做的工作是,输出所给字符串中制定数目的
元素的组合种类,使用递归算法,小弟实在看不懂它具体是怎么运算的,
求代码详细注释,
import javax.swing.JOptionPane;
public class Combination {
public static void main(String[] args) {
String input = JOptionPane.showInputDialog("please input your String:");
String numString = JOptionPane.showInputDialog("please input the number of your Combination:");
int num = Integer.parseInt(numString);
Combine(input, num);
}
private static void Combine(String input, int num) {
char[] a = input.toCharArray();
String b ="";
Com(a, num, b, 0, a.length);
}
private static void Com(char[] a, int num, String b, int low, int high) {
if (num == 0) {
System.out.println(" "+b);
}
else {
for (int i = low; i<a.length; i++) {
b += a[i];
Com(a, num - 1, b, i+1, a.length);
b=b.substring(0, b.length()-1);
}
}
}
求各位大侠给出每行代码的详细注释,
------解决方案--------------------
Java code
private static void Com(char[] a, int num, String b, int low, int high) {
if (num == 0) { //当num=0的时候,打印b
System.out.println(" "+b);
} else { //否则
for (int i = low; i<a.length; i++) { 从low位置开始到a的元素结束循环
b += a[i]; //每次循环追加一个字符到b --1
Com(a, num - 1, b, i+1, a.length); //然后递归
b=b.substring(0, b.length()-1); 然后再删除 --1 追加的字符
}
}
}