【已解决】用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);}
}