У меня есть следующая последовательность чисел:Java Вычислить последовательность с очередью
S1 = N, S2 = S1 + 1, S3 = 2*S1 + 1, S4 = S1 + 2, S5 = S2 + 1, S6 = 2*S2 + 1, S7 = S2 + 2 ...
ArrayDeque<E>
Используя класс, я должен написать программу, чтобы напечатать свои первые 50
элементов для данного N
. Примеры:
input 2
output 2 3 5 4 4 7 5 6 11 7 5 9 6 ...
Это мой код. Проблема в том, что я не могу обновить следующий S
import java.util.ArrayDeque;
import java.util.Queue;
import java.util.Scanner;
public class p04 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int numN = scanner.nextInt();
scanner.close();
int counter = 1;
int nexS = numN;
Queue<Integer> fifty = new ArrayDeque<>();
for (int i = 0; i < 50; i++) {
if (i == 0){
fifty.add(numN);
}else {
if (counter == 1){
counter++;
numN = nexS + 1;
fifty.add(numN);
}else if (counter == 2){
counter++;
numN = (nexS * 2) + 1;
fifty.add(numN);
}else {
counter = 1;
numN = nexS +2;
fifty.add(numN);
nexS = nexS + 1;
}
}
}
for (Integer integer : fifty) {
System.out.print(integer + " ");
}
}
}
Вы что-то пробовали? можете ли вы показать нам, что вы сделали? –
Я изменил его. Это было не специально. Извините – Phil