我正在尝试返回自然数的位数,我几乎就在那里。我不知道如何计算数字。
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,但我如何计算递归?
答案 0 :(得分: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;
答案 1 :(得分:2)
private static int numberOfDigits(NaturalNumber n) {
NaturalNumber zero = new NaturalNumber2(0);
if (n.compareTo(zero) == 0) {
return 0;
} else {
n.divideBy10();
return 1 + numberOfDigits(n);
}
}
答案 2 :(得分:1)
如果您想覆盖零,请使用以下内容。
private static int numberOfDigits(NaturalNumber n) {
if(n < 10) return 1;
return 1 + numberOfDigits(n/10);
}
答案 3 :(得分:0)
这是C ++中的
int digits(int a, int c)
{
int d = -1;
if (a<10 && a>0)
{
c = c+1;
cout << "No of digits = " << c << endl;
}
else if (a%10 == 0) // correct
{
d = a/10;
c++;
if (d == 0)
{
cout << "No of digits = " << c+2 << endl;
return c;
}
else { digits(d,c); }
}
else if (a>10 && a%10 != 0)
{
d = a/10;
c++;
if (d == 0)
{
cout << "No of digits = " << c+2 << endl;
return c;
}
else { digits(d,c); }
}
return 0;
}
int main()
{
int n;
cin >> n;
int c1 = 0;
digits(n,c1);
return 0;
}