求递归算法代码详细注释

qingyangdian456 2011-11-18 07:46:39
这是一个组合的例子,它所做的工作是,输出所给字符串中制定数目的

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


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);

}

}

}

求各位大侠给出每行代码的详细注释,
...全文
180 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
handsomebigdog 2011-11-22
  • 打赏
  • 举报
回复
学学汇编,递归会容易些理解
deerfirst 2011-11-18
  • 打赏
  • 举报
回复
楼主截取断点,单步调试看看怎么运行的应该可以理清思绪吧
qybao 2011-11-18
  • 打赏
  • 举报
回复
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 追加的字符
}
}
}

kouyiSC 2011-11-18
  • 打赏
  • 举报
回复
20分实在不想麻烦啊。。。

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧