2016-03-18 3 views
-1

Я пытаюсь написать метод (в частности, используя рекурсию), который вернет число четных цифр в натуральном числе. Я хотел бы сделать это с помощью возвращаемого типа NaturalNumber, чтобы получить более полное знакомство с ним. Может ли кто-нибудь указать мне в правильном направлении?Подсчет чисел с номером NaturalNumber

//private static NaturalNumber countEvenDigits(NaturalNumber num) 

//initalize a NaturalNumber--count--to zero 

//while loop with condition that the num is not 0 

//initialize a NaturalNumber--k--to num.divideBy10 so that it is equal to the last digit in the natural number 

//if statement-- k mod 2 is equal to 0 

//increment the NaturalNumber count 

//end if statement 

//call this function recursively 

//end while statement 

//return count 

Однако моя текущая реализация просто возвращает 0, о чем я думаю неправильно?

+0

натуральное число не является стандартным классом Java. Я бы сделал это, используя int для начала. –

+0

Просто используйте% 10, чтобы получить последнюю цифру, а затем проверьте, даже если она вернулась 1 + f (num/10). В противном случае return f (num/10) – Brendan

+0

должен быть mod 10, а не делить на 10, если вы хотите получить последнюю цифру. 123/10 = 12, 123% 10 = 3 –

ответ

0

Во-первых, если все, вы отправили это в Java, так что я думаю, натуральное число Integer (или INT примитивным)

Тогда ваша функция должна иметь проверку в начале, если вызов функции «окончательное требование» является выполнено (число! = 0).

Если ваш номер равен! = 0, вы действительно делаете чек, если он четный или нечетный. После этой проверки вам нужно помнить, что (count ++) и добавить возвращаемое значение вызова рекурсивного метода на ваш счет, но с последней цифрой удалено, потому что вы уже проверили это в этом вызове. (count + = countEvenDigits (naturalNumber/10)). Это должно вызывать себя до тех пор, пока есть больше цифр и, наконец, он попадет в исходный if(), который выйдет.

/** http://stackoverflow.com/q/36085564/6077352 */ 
public class NaturalNumber { 
    public static void main(String[] args) { 
     int naturalNumber = 123456789; 
     System.out.println(countEvenDigits(naturalNumber)); 
    } 
    private static int countEvenDigits(int naturalNumber) { 
     int count = 0; 
     if (naturalNumber != 0) { 
      if (naturalNumber % 2 == 0) { 
       count = count + 1; 
      } 
      count = count + countEvenDigits(naturalNumber/10); 
     } 
     return count; 
} } 

Пример вывода:

Смежные вопросы