使用递归计算自然数中的位数

Ken*_*ied 2 java recursion

我试图返回自然数的位数,我几乎就在那里.我不知道如何计算数字.

    private static int numberOfDigits(NaturalNumber n) {
    NaturalNumber zero = new NaturalNumber2(0);
    int a = 0;
    if (n.compareTo(zero) != 0) {
        a = n.divideBy10();
        numberOfDigits(n);           
    }
    return a;
}
Run Code Online (Sandbox Code Playgroud)

我知道我将返回n的最后一个剩余部分,它是0,但我如何计算递归?

rge*_*man 5

如果您的电流n不为零,那么您有一位数加上数字中的位数除以10.提示:您不需要a变量.

if (n.compareTo(zero) != 0)
{
    // Return 1 for the last digit (1) + the rest.
    return 1 + numberOfDigits(n.divideBy10());
}
// Base case.
return 0;
Run Code Online (Sandbox Code Playgroud)