Как найти эту контрольную сумму с помощью Java

#java

#java

Вопрос:

Чтобы найти эту конкретную контрольную сумму, нам нужно просуммировать цифры входных данных и умножить на 2. Достаточно просто найти остаток с помощью цикла.

Если результат меньше 10, то это контрольная сумма числа. Если оно равно 10 или выше, нам нужно повторить это еще раз, пока результат не станет меньше 10.

Если он попадает в бесконечный цикл, например, с вводом 18, верните значение -1.

Это то, что у меня есть до сих пор:

 public int getChecksum(int input, int previous) {
        int sum = 0;

        while (input > 0) {
            sum  = input % 10;
            input /= 10;
        }
        if (sum * 2 < 10) {
            return sum * 2;
        } else if (sum * 2 >= 10 amp;amp; previous != sum) {
            previous = sum;
            return getChecksum(sum * 2, previous);
        } else if (previous == sum) {
            return -1;
        }
        return sum * 2;
    }
 

Я действительно хотел знать, есть ли способ сделать это, не делая это рекурсивно, как я делаю здесь.

Ответ №1:

Довольно простой рекурсивный алгоритм, подобный этому, также может быть реализован итеративно. Обычно вы бы сделали это, превратив рекурсивный вызов в цикл с условием рекурсивного завершения в качестве условия завершения цикла.