树根Digital root算法

题目:https://leetcode.com/problems/add-digits/,题目很简单,此处文章只是防止自己将来忘了第二中的公式,毕竟第二种的方法我没太懂(原谅我英语不甚好)


方法1:

此法思路很简单,只是简单的拆了加,再拆再加的过程。

<span style="font-size:18px;">int addDigits(int num) {
    if(num < 10){
        return num;
    }else{
        int sum = 0;
        int temp = 0;
        while(num/10){
            sum += num%10;
            num /= 10;
        }
        sum += num % 10;
        addDigits(sum);
    }
}</span>

方法2:

此处推荐文章:https://en.wikipedia.org/wiki/Digital_root,因都是英文,我看不太懂,就看到了那个公式,如果哪位把它翻译了那就棒棒得了(把翻译好的思路讲给我听哈)。虽然网站上有中文版的,但是你们看了就知道了。

用公式:n-9【(n-1)/9】;【a】的计算式求出不大于a的正整数。

当然,这样的话程序就变得十分简单了:

<span style="font-size:18px;">int addDigits(int num) {
    if(num < 10){
        return num;
    }else{
        return num-9*((num-1)/9);
    }
}</span>


你可能感兴趣的:(算法,root,digital,树根)