Страницы

Поиск по вопросам

воскресенье, 12 мая 2019 г.

Рекурсивный вывод числа наоборот

Есть задача, написать рекурсивную процедуру для вывода на экран цифр натурального числа в обратном порядке. Я её решил, но хочу что бы на выходе из рекурсии получалось целое число. Вот, что я сейчас имею.
public class MyClass { public static int consoleInputFirstNumber() { Scanner scan = new Scanner(System. in ); System.out.print("Enter number: "); if (scan.hasNextInt()) { return scan.nextInt(); } else { System.out.println("Entered not number. Try again."); return consoleInputFirstNumber(); } }
public static void numberReverseOrder(int number) { if (number == 0) { return; } else { System.out.print(number % 10); numberReverseOrder(number / 10); } }
public static void consoleOutput(int result) { System.out.println(result); }
public static void main(String[] args) { int input = consoleInputFirstNumber(); numberReverseOrder(input); } }
Кто знает, что нужно что бы решить мою проблему дайте подсказку или напишите решение. Заранее спасибо.


Ответ

Вообще-то ваша программа вроде как работает. Она только для 0 ничего не выводит, поэтому непонятно, чего вы хотите. Но вот для разнообразия моё решение.
Проще такую задачу решать, преобразовав число в строку и сведя её к выводу перевёрнутой строки. Кроме того я бы разделил преобразование строки к перевёрнутой и собственно вывод. Вот как вашу задачу можно решить рекурсивно:
import java.util.Scanner;
public class RecursiveReverse { public static String reverse(String str) { return str.isEmpty() ? "" : reverse(str.substring(1)) + str.charAt(0); }
public static void main(String[] args) { try (Scanner scan = new Scanner(System.in)) { System.out.print("Enter number: "); System.out.println("Reversed: " + reverse(String.valueOf(scan.nextInt()))); } } }

Комментариев нет:

Отправить комментарий