递归问题!

fhfhjad 2010-03-03 04:43:44
考题的思想是这样的 (n,r) n是自然数递减 r是组合的位数
形如 (3,2)32 31 21
(4,3) 432 431 321
(6,2)65 64 63 62 61 54 53 52 51 43 42 41 32 31 21

请大家帮忙看看如何编写?请附上源码供大家学习!!!
...全文
124 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangli256 2010-03-04
  • 打赏
  • 举报
回复
可不可以 不要 用for 啊。。。。
musiclee 2010-03-03
  • 打赏
  • 举报
回复
运行结果:

结果为:654
结果为:653
结果为:652
结果为:651
结果为:643
结果为:642
结果为:641
结果为:632
结果为:631
结果为:621
结果为:543
结果为:542
结果为:541
结果为:532
结果为:531
结果为:521
结果为:432
结果为:431
结果为:421
结果为:321
musiclee 2010-03-03
  • 打赏
  • 举报
回复
楼上的有点麻烦:
看我的递归(加了注释)

public static void main(String[] args) {
// TODO 自动生成方法存根
XX(6, 3,3, 0,0);
}

public static void XX(int n,int NUM,int bit,int deep,int push)
{
//n为输入的最大数
//NUM 为输出几位数
//bit=NUM的数 为递归调用用
//deep push //都是为递归调用设置的变量
if(deep==NUM){
System.out.println("结果为:"+push);
return;
}else {
for(int i=n;i>0;i--){
int t=i;
for(int j=0;j<bit-1;j++)
t*=10;
push+=t;
XX(i-1,NUM, bit-1, deep+1,push);
push-=t;
}
}
}
}
yuyeyi 2010-03-03
  • 打赏
  • 举报
回复
sixiangfgsdgfsdfsdfsdfs
eleven_wolf 2010-03-03
  • 打赏
  • 举报
回复
import java.util.ArrayList;
import java.util.List;

public class Test {
public List<List<Integer>> getInt(int n,int r) {
if(r > n || r < 1)
return new ArrayList<List<Integer>>();
List<List<Integer>> list = new ArrayList<List<Integer>>();
if(r == 1) {
for(int i=0;i<n;i++) {
List<Integer> l = new ArrayList<Integer>();
l.add(n-i);
list.add(l);
}
return list;
} else {
for(;n>=r;n--) {
List<List<Integer>> list2 = getInt(n-1,r-1);
for(int j=0;j<list2.size();j++) {
List<Integer> l = list2.get(j);
l.add(0, n);
list.add(l);
}
}
return list;
}
}
public static void main(String[] args) {
Test t = new Test();
System.out.println(t.getInt(5, 3));
}
}
yangli256 2010-03-03
  • 打赏
  • 举报
回复
期待神人的出现。。。。。。。。。。。。。。。。
fhfhjad 2010-03-03
  • 打赏
  • 举报
回复
不好意思,你的对!!
eleven_wolf 2010-03-03
  • 打赏
  • 举报
回复
(4,3)应该是432,431,321
还是432,431,421,321?

62,619

社区成员

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

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