日期:2014-05-20  浏览次数:20732 次

求递归算法代码详细注释
这是一个组合的例子,它所做的工作是,输出所给字符串中制定数目的

元素的组合种类,使用递归算法,小弟实在看不懂它具体是怎么运算的,
求代码详细注释,


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 追加的字符
        }
    }
}