给出四个数1,2,3,4使用递归和非递归方式实现:输出没有重复数字的三位数;输出没有重复数字的低于四位数的所有数据
非递归:就是使用for循环来遍历:
输出没有重复数字的三位数
@Test
public void test1() {
int count = 0;
int[] arr = { 1, 2, 3, 4 };
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length; j++) {
for (int m = 0; m < arr.length; m++) {
if (i != j && i != m && m != j) {
count++;
System.out.print(arr[i] + "" + arr[j] + "" + arr[m] + " , ");
}
}
}
}
System.out.println();
System.out.println("一共" + count + "个数字");
}
结果:
123 , 124 , 132 , 134 , 142 , 143 , 213 , 214 , 231 , 234 , 241 , 243 , 312 , 314 , 321 , 324 , 341 , 342 , 412 , 413 , 421 , 423 , 431 , 432 ,
一共24个数字
输出没有重复数字的低于四位数的所有数据
@Test
public void test2() {
int count = 0;
int[] arr = { 1, 2, 3, 4 };
for (int i = 1; i < arr.length; i++) {// 选择一个数,两个数,或者是三个数
if (i == 1) {
for (int j = 0; j < arr.length; j++) {
System.out.print(arr[j] + " , ");
count++;
}
}
System.out.println();
if (i == 2) {
for (int m = 0; m < arr.length; m++) {
for (int n = 0; n < arr.length; n++) {
if (m != n) {
System.out.print(arr[m] + "" + arr[n] + " , ");
count++;
}
}
}
}
System.out.println();
if (i == 3) {
for (int a = 0; a < arr.length; a++) {
for (int b = 0; b < arr.length; b++) {
for (int c = 0; c < arr.length; c++) {
if (a != b && a != c && b != c) {
System.out.print(arr[a] + "" + arr[b] + "" + arr[c] + " , ");
count++;
}
}
}
}
}
}
System.out.println();
System.out.println("一共有"+count+"个数");
}
控制台:
1 , 2 , 3 , 4 ,
12 , 13 , 14 , 21 , 23 , 24 , 31 , 32 , 34 , 41 , 42 , 43 ,
123 , 124 , 132 , 134 , 142 , 143 , 213 , 214 , 231 , 234 , 241 , 243 , 312 , 314 , 321 , 324 , 341 , 342 , 412 , 413 , 421 , 423 , 431 , 432 ,
一共有40个数