主要是运用递归的思想,函数主要两个参数,point是上一次取到的位置,picked主要记录在数组b中所取的元素的个数,函数的每一轮递归都会取一个数。
1 package pack; 2 import java.util.*; 3 4 public class demo_1 { 5 static int r,n; 6 static int a[]=new int [100]; 7 static int b[]=new int[100]; 8 static void f(int point,int picked) { 9 if(picked==r) { 10 for(int i=0;i<r;i++) 11 System.out.print(b[i]+" "); 12 System.out.println(); 13 return ; 14 } 15 for(int i=point;i<n;i++) { 16 b[picked]=a[i]; 17 f(i+1,picked +1); 18 } 19 } 20 21 public static void main(String[] args) { 22 Scanner in = new Scanner(System.in); 23 System.out.print("请输入N的值:"); 24 n=in.nextInt(); 25 System.out.println("请输入数组的"+n+"个值:"); 26 for(int i=0;i<n;i++) 27 a[i]=in.nextInt(); 28 29 System.out.print("请输入R的值"); 30 r=in.nextInt(); 31 f(0,0); 32 33 } 34 }