从m个数中取r个元素的组合的Java程序哪儿错了啊,求大神指教
importjava.util.Scanner;publicclasszuhe1{/***@paramargs*/publicstaticvoidmain(String[...
import java.util.Scanner;
public class zuhe1 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner (System.in);
System.out.println("请输入n,m的值(n>m)");
System.out.print("n=");
int n = input.nextInt();
System.out.print("m=");
int m = input.nextInt();
zh(n,m,1);
}
public static void zh(int n,int m,int num){
int [] a = new int[100];
int i;
if (m==num-1){
for(i=1;i<=m;i++){
System.out.print(a[i]+" ");
}
}
for(i=a[num-1]+1;i<n+1;i++){
a[num]=i;
zh(n,m,num+1);
}
}
} 展开
public class zuhe1 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner (System.in);
System.out.println("请输入n,m的值(n>m)");
System.out.print("n=");
int n = input.nextInt();
System.out.print("m=");
int m = input.nextInt();
zh(n,m,1);
}
public static void zh(int n,int m,int num){
int [] a = new int[100];
int i;
if (m==num-1){
for(i=1;i<=m;i++){
System.out.print(a[i]+" ");
}
}
for(i=a[num-1]+1;i<n+1;i++){
a[num]=i;
zh(n,m,num+1);
}
}
} 展开
3个回答
展开全部
错误是因为你的下标越界了。
我帮你改正了一下。不知道你是不是要这样的结果呢?
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner (System.in);
System.out.println("请输入n,m的值(n>m)");
System.out.print("n=");
int n = input.nextInt();
System.out.print("m=");
int m = input.nextInt();
zh(n,m,1);
}
public static void zh(int n,int m,int num){
int [] a = new int[100];
int i;
if (m==num-1){
for(i=1;i<=m;i++){
System.out.print(a[i]+" ");
}
}
for(i=a[num-1]+1;i<n+1;i++){
if(num == a.length){
break;
}
a[num-1]=i;
zh(n,m,num+1);
}
}
展开全部
for(i=0;i<=m-1;i++){
System.out.print(a[i]+" ");
}
数组下标是从0 开始的,m-1结束,改成上那样就可以了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最下面a[num]=i;这个一直在赋值,而下一句zh(n,m,num+1);num一直在加一,而数组a最大长度是100,所以你在
a[num]=i;
zh(n,m,num+1);
外面加一个判断,如果num<100,
a[num]=i;
zh(n,m,num+1);
外面加一个判断,如果num<100,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询