给出四个数1,2,3,4使用递归和非递归方式实现:输出没有重复数字的三位数;输出没有重复数字的低于四位数的所有数据

给出四个数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个数
 

 

递归方式,未完待续:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值