2

自然数の桁数を返そうとしていますが、もうすぐです。とはいえ、桁数の数え方がわかりません。

    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;
}

n の最後の残りの 0 を返していることはわかっていますが、再帰をどのように数えますか?

4

4 に答える 4

5

現在の値nがゼロでない場合は、10 で割った数の桁数に 1 桁を加えたものになります。ヒント:a変数は必要ありません。

if (n.compareTo(zero) != 0)
{
    // Return 1 for the last digit (1) + the rest.
    return 1 + numberOfDigits(n.divideBy10());
}
// Base case.
return 0;
于 2013-10-16T17:00:13.420 に答える
1

ゼロをカバーしたい場合は、以下を使用してください。

private static int numberOfDigits(NaturalNumber n) {
    if(n < 10) return 1;
    return 1 + numberOfDigits(n/10);
}
于 2014-10-12T19:56:20.800 に答える