Java算法分析

101 阅读1分钟

题目

给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。

输入: num = 0
输出: 0

代码分析

    public int addDigits(int num) {
        while (num > 9) {
            int t = 0;
            while (num != 0) {
                t += num % 10;
                num /= 10;
            }
            num = t;
        }
        return num;
    }

代码分析

首先判断输入的数字是否大于9,如果大于9,则进入外部循环。在外部循环中,定义一个临时变量 t 并初始化为0,然后进入内部循环。在内部循环中,通过对输入的数字不断进行取余操作,将每一位的数字加到 t 上,并将输入的数字除以10以去掉最后一位。一直循环执行,直到输入的数字变为0。然后将 t的值赋给输入的值,继续进行下一次外部循环。一直执行外部循环,直到输入的数字变为一个个位数。这个个位数就是我们要的结果。