Вопрос по арифметической прогрессии
Задача на расчет Nго члена арифметической прогрессии Входные: а1 - первый член, q - разность(шаг) прогрессии Найти - an Формула Nго члена: an = a1+ d · (n - 1)
import java.util.Scanner;
public class demoRecurs {
static class recurs {
int arProg(int a1, int d, int an) { //an = a1+ d · (n - 1)
while (an > 1) {
a1 = d + arProg(a1, d, an - 1);
}
if (an == 1)
return a1;
}
}
public static void main(String args[]) {
recurs f = new recurs();
Scanner str = new Scanner(System.in);
System.out.println("Введите число: ");
int num = str.nextInt();
System.out.println("Введите шаг прогрессии: ");
int aps = str.nextInt();
System.out.println("Введите номер искомого члена прогрессии: ");
int count = str.nextInt();
System.out.println(f.arProg(num, aps, count));
}
}
В чем ошибка?
Ответы (2 шт):
Автор решения: MBo
→ Ссылка
Цикл while не нужен, тем более, что он не работает без изменения an.
Достаточно простого if
if (an > 1)
a1 = d + arProg(a1, d, an - 1);
else
return a1;
А вообще рекурсия здесь совершенно не к месту - формула же простая, вот в неё и нужно подставить параметры и получить ответ
Автор решения: Silfe
→ Ссылка
public int S(int a, int d, int n) {
int s = 0;
s = a + (n - 1) * d;
return s;
}