[/code=java]
Имеется такой код:
Код | package com.company;
import java.util.*;
public class Main {
static int TOTAL_POINTS = 4, POINTS_ON_LINE = 3;
static int[] temp = new int[POINTS_ON_LINE];
public static void main(String[] args) { int[] points = new int[]{1,2,3,4};
System.out.println("Без повторений:"); p1(0,0, points); }
static void p1(int nowPosition, int sizeArray, int[] points) { if (nowPosition == POINTS_ON_LINE) { System.out.println("Выводим:"); System.out.println(Arrays.toString(temp)); } else { for(int i = sizeArray + 1; i <= TOTAL_POINTS; i++) { temp[nowPosition] = points[i-1]; p1(nowPosition + 1, i, points); } } } }
|
На выходе получаем:
Код | Без повторений: Выводим: [1, 2, 3] Выводим: [1, 2, 4] Выводим: [1, 3, 4] Выводим: [2, 3, 4] |
Программа работает как и задумывалось. Но необходимо избавиться от рекурсивного вызова метода p1. Пробовал переписать вот так, но не выходит.
Код | import java.util.*;
public class Main {
static int TOTAL_POINTS = 4, POINTS_ON_LINE = 3;
static int[] temp = new int[POINTS_ON_LINE];
public static void main(String[] args) { int[] points = new int[]{1,2,3,4};
System.out.println("Без повторений:"); p1(0,0, points); }
static void p1(int[] points) { int sizeArray = points.length;
for(int i = sizeArray + 1; i < TOTAL_POINTS; i++, sizeArray = i) { int nowPosition = 0;
if(nowPosition == POINTS_ON_LINE) { System.out.println("Выводим: " + Arrays.toString(temp)); } else { temp[nowPosition] = points[i-1]; nowPosition++; } } } } |
Что где не так? |