【已解决】用JAVA代码实现递归算法-从自然数中取3个数进行组合之递归算法-用递归算法找出 n(n>=3) 个自然数中取 3 个数的组合。
任务描述
本关任务:用递归算法找出 n(n>=3) 个自然数中取 3 个数的组合。
测试说明
平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部计算正确才能通过测试:
测试输入:5 (n=5;,表示从1,2,3,4,5自然数中选择 3 个数)
预期输出:
5 4 3
5 4 2
5 4 1
5 3 2
5 3 1
5 2 1
4 3 2
4 3 1
4 2 1
3 2 1
代码实现
package step2;
import java.util.Scanner;
public class Recursion{
// 递归函数生成组合
private static void findCombinations(int start, int n, int depth, int[] combination, int r) {
// 当组合长度达到3时,打印当前组合
if (depth == r) {
for (int i = 0; i < r; i++) {
System.out.print(combination[i] + " ");
}
System.out.println();
return;
}
// 从当前开始位置选择数字,确保从大到小排列
for (int i = start; i >= 1; i--) {
combination[depth] = i;
findCombinations(i - 1, n, depth + 1, combination, r);
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt(); // 读取输入的n值
scanner.close();
// 确保n的值符合要求
if (n < 3) {
System.out.println("n 应该大于等于3.");
return;
}
int[] combination = new int[3]; // 存储组合的数组
// 从n开始递归生成组合
findCombinations(n, n, 0, combination, 3);
}
}