如何在不转换为字符串的情况下完成/修复加性持久算法?

时间:2019-04-03 04:06:14

标签: java algorithm

尝试编写附加持久性算法的代码。 AP是指您有一个数字,并且会不断添加其数字,直到剩下一个数字为止。例如。 9991 = 9 + 9 + 9 + 1 = 28,2 + 8 = 10,1 + 0 = 1。因此,9991的加法持久性为3。花了3次加法,将数字减为一位。

我已经编码了问题,但是它一直在增加计数器。对我来说似乎正确,但无法正常工作。

    Scanner reader = new Scanner(System.in);
    int ui;
    int b;
    int sum = 0;
    int count = 0;

    System.out.print("Enter a number: ");
    ui = reader.nextInt();

    do {
        do {
            b = ui % 10;
            ui = ui / 10;
            sum += b;

        } while (ui != 0);

        ui = sum;
        count++;

        //System.out.print(b);
        //System.out.print(sum);
        //System.out.print(ui);

    } while (ui > 10);

    System.out.print(count+1);
}

1 个答案:

答案 0 :(得分:1)

您需要在每次运行时重置sum,否则您将为其分配ui,直到它溢出为止,该数量要大于10。这是正确的版本:

do {
    sum = 0;
    do {
        b = ui % 10;
        ui = ui / 10;
        sum += b;

    } while (ui > 9);
    sum += ui;

    ui = sum;
    count++;

} while (ui > 9);

System.out.print(count);