3

単一の int パラメーターを取り、パラメーターに含まれるゼロの数を返す再帰メソッドを使用して、整数内のゼロの数をカウントすることができます。

そう:

zeroCount(1000)

戻ります:

3

"12345 / 10" = 1234 のようにすると、整数から最後の桁を削除できます。

次のようにして、整数から最後の桁を取得できます: "12345 % 10" = 5

これは私がこれまでに持っているものです:

public static int zeroCount(int num)
{
    if(num % 10 == 0)
        return num;
    else
        return zeroCount(num / 10);
}

この機能を解決するのに役立つ提案やアイデアはありますか?

4

15 に答える 15

5

頭の中でコードを実行します。

zeroCount(1000)

1000 % 10 == 0、だからあなたは戻るつもりです1000。それは意味がありません。


各桁をポップして繰り返します。

宿題のように聞こえるので、実際のコードはあなたに任せますが、次のように行うことができます。

zeroes(0) = 1
zeroes(x) = ((x % 10 == 0) ? 1 : 0) + zeroes(x / 10)

終了条件がないと、永久に再発する可能性があることに注意してください。

于 2012-11-08T05:23:35.033 に答える
5
public static int zeroCount(int num)
{
    if(num == 0)
       return 0;

    if(num %10 ==0)
        return 1 + zeroCount(num / 10);
    else
        return zeroCount(num/10); 
}

これはうまくいくでしょう

于 2012-11-08T05:29:40.743 に答える
0

x%10はxの最後の桁を与えるので、それを使用してゼロを識別することができます。さらに、特定の桁がゼロかどうかを確認した後、その桁を取り出したいのですが、どうすればよいですか?10で割ります。

public static int zeroCount(int num)
{
  if(num == 0) return 1;      
  else if(Math.abs(num) < 9)  return 0;
  else return (num % 10 == 0) ? 1 + zeroCount(num/10) : zeroCount(num/10);
}

math.Abs​​を使用して負の数を許可しているので、java.lang.Mathをインポートする必要があります。

于 2012-11-08T05:51:05.230 に答える
0

ifとelseの両方から再帰関数を呼び出す必要があります。また、ベースケースがありませんでした:-

public static int zeroCount(int num)
{
    if(num % 10 == 0)
        return 1 + zeroCount(num / 10);
    else if (num / 10 == 0)
        return 0;
    else
        return zeroCount(num / 10);
}
于 2012-11-08T05:24:25.170 に答える
0

これは単純な問題であり、再帰を行う必要はありません。より良い方法は、整数を文字列に変換し、char '0' をチェックすることだと思います

public static int zeroCount(int num)
{
String s=Integer.toString(num);
int count=0;
int i=0;
for(i=0;i<s.length;i++)
{
if(s.charAt(i)=='0')
{
count++;
}
}
return count;
}
于 2012-11-08T05:29:45.190 に答える
0
int check(int n){
    if(n==0)
        return 1;
    return 0;

}


int fun(int n)
{
    if(n/10==0)
    {
        if(n==0){
            return 1;
        }
        else{
                return 0;
    }
    }
    return check(n%10)+fun(n/10);

}
于 2020-02-29T14:23:10.820 に答える