Как выйти из метода, т.е. как я могу вернуться из функции в этой рекурсии в Java?

public class solution {

    public static int countZerosRec(int input){

      int n=0;
      int k =0;
      int count=0;
      //Base case
      if(n==0)
      {
        return; // How can i return the method from here, i.e how can i stop the execution of the recursive program now.
      }

      k=input%10;
      count++;
      n=input/10;
      countZerosRec(n);
      int myans=count;
      return myans;


    }
}

Пожалуйста, помогите мне выбраться из этого метода. Это программа для подсчета количества нулей.

Пример 34029030 а = 3

0
Raghav Sharma 1 Мар 2018 в 05:53

3 ответа

Если вы сосредоточены на том, чтобы найти число нулей в данном числе, вы можете использовать это альтернативно:

     int numOfZeroes =0;
     long example = 670880930;
     String zeroCounter = String.valueOf(example);
     for(int i=0; i< example.length();i++){
         if(zeroCounter.charAt(i) ==0){
             numOfZeroes++;
         }

     }
      System.out.print("Num of Zeros are"+ numOfZeroes);` `
0
Novice 1 Мар 2018 в 03:46

Вместо того, чтобы публиковать кодовый ответ на ваш вопрос, я опубликую несколько указателей, которые помогут вам двигаться.

  1. Как сказал @jrahhali, ваш код не пройдет return оператор внутри блока if (что является ошибкой, кстати, потому что у вас есть int возврат тип).

  2. Я бы порекомендовал вам переместить последние две строки на некоторые вызовы функция (такая как main метод). Таким образом, вся эта функция будет нужно сделать, это сделать некоторую базовую обработку и двигаться вперед.

  3. Вы не проверяете k вообще. На самом деле, ваш count собирается всегда увеличивать.

Надеюсь, этого вам хватит, чтобы разобраться.

0
cst1992 1 Мар 2018 в 06:16
int count =0;
private int getZeroCount(int num){
         if(num+"".length == 1){
                  if(num==0){
                        count++;
                  }
                  return count;
         }
         if(num%10 == 0){
                  count++;
         }
         num /= 10;
         getZeroCount();

}

0
suhasini 1 Мар 2018 в 08:45