Вопрос по арифметической прогрессии

Задача на расчет 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;
    }
→ Ссылка