Recursion - digits in reverse order

前端 未结 15 1234
一向
一向 2021-01-15 10:32

I need to implement a recursive method printDigits that takes an integer num as a parameter and prints its digits in reverse order, one digit per line.

This is what

15条回答
  •  感动是毒
    2021-01-15 10:58

    This doesn't exactly answer the question, but it actually computes the entire reversed number instead of printing the digits as they are calculated. The result is an int with the digits in reversed order. Much more powerful than printing out the string version of the numbers one by one:

    public class Reverse {
        public static void main(String[] args) {
            // input int parameter
            int param = Integer.parseInt(args[0]);
            System.out.println(reverse(param)); 
        }
    
        public static int reverse(int input) {
            return reverse(input, 0); 
        }
    
        private static int reverse(int original, int reversed) {
            // get the rightmost original digit and remove it
            int rightmost = original % 10;
            original -= rightmost;
            original /= 10;
    
            // add rightmost original digit to left of reversed
            reversed += rightmost * Math.pow(10, numDigits(original));
    
            return (original == 0)
                ? reversed
                : reverse(original, reversed);
        }
    
        public static int numDigits(int number) {
            number = Math.abs(number);
    
            if (number >= 10) {
                return 1 + numDigits(number /= 10);
            } else if (number > 0) {
                return 1;
            } else {
                return 0;
            }
        }
    }
    

提交回复
热议问题