Loading... https://leetcode.cn/problems/add-digits/description/ ## 题目 给定一个非负整数 `num`,反复将各个位上的数字相加,直到结果为一位数。返回这个结果。 **示例 1:** **输入:** num = `38` **输出:** 2 **解释:** 各位相加的过程为**:** 38 --> 3 + 8 --> 11 11 --> 1 + 1 --> 2 由于 `2` 是一位数,所以返回 2。 **示例 2:** **输入:** num = 0 **输出:** 0 **提示:** - `0 <= num <= 231 - 1` **进阶:** 你可以不使用循环或者递归,在 `O(1)` 时间复杂度内解决这个问题吗? ## 思路 使用递归法,将每次各位相加结果递归调用当前方法,直到最终数字小于 10. ## 代码 ```java class Solution { public int addDigits(int num) { if (num < 10) { return num; } int n = 0; while (num != 0) { n += num % 10; num /= 10; } return addDigits(n); } } ``` 最后修改:2023 年 01 月 22 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请我喝杯咖啡吧。