这是一个组合的例子,它所做的工作是,输出所给字符串中制定数目的元素的组合种类,使用递归算法,小弟实在看不懂它具体是怎么运算的,
求代码详细注释,
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);}}}求各位大侠给出每行代码的详细注释,

解决方案 »

  1.   

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