【发布时间】:2016-03-22 13:30:59
【问题描述】:
给定一个非负整数 n,递归地计算(无循环) 8 作为数字出现的计数,除了紧靠其左侧的另一个 8 的 8 计数加倍,所以8818 产生 4。请注意,mod (%) 除以 10 产生最右边的数字(126 % 10 是 6),而除以 (/) 除以 10 会删除最右边的数字(126 / 10 是 12)。
count8(8) → 1
count8(818) → 2
count8(8818) → 4
我的程序似乎无法计算双 '8'。这是代码。
public int count8(int n) {
boolean flag = false;
if(n<10)
{
if (n==8)
{
if(flag == true)
return 2;
else
{
flag = true;
return 1;
}
}
else
{
flag = false;
return 0;
}
}
else
return count8(n%10)+count8(n/10);
}
我想知道最后一行是否出错,但我不知道如何检查。期待您的帮助。谢谢!
【问题讨论】:
-
8888的答案是什么?3 *4 = 12? -
如果我理解正确的话,应该是7
-
这可能会有所帮助。 stackoverflow.com/questions/275944/…
-
这看起来像是一道作业题。你不这么认为,在堆栈上询问有点重要。问问同学,试试看。有很多方法可以解决它,但最明显的一个提示是:添加一个布尔参数
-
你介绍的这个标志也应该是不必要的。