首页 > 解决方案 > 如何使用 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 && previous != sum) {
            previous = sum;
            return getChecksum(sum * 2, previous);
        } else if (previous == sum) {
            return -1;
        }
        return sum * 2;
    }

我真的很想知道是否有一种方法可以做到这一点,而无需像我在这里所做的那样递归地进行。

标签: java

解决方案


像这样一个相当简单的递归算法也可以迭代地实现。通常,您会将递归调用转换为以递归终止条件作为循环终止条件的循环。


推荐阅读