Recursion - digits in reverse order

前端 未结 15 1060
一向
一向 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:45
    public static void reversDigits(long number) {
        System.out.println(number % 10);
        if (number >= 10) {
            reversDigits(number / 10);
        }
    }
    

    This is shortest/simplest version so far;)

    0 讨论(0)
  • 2021-01-15 10:45
     public void reverse(int num){
            System.out.print(num %10);
            if(num / 10 == 0){
                  return;
            }
            reverse(num /10);
             return;
        }
    
    0 讨论(0)
  • 2021-01-15 10:45

    Relatively simple since you need to print one digit per line. You also state that you print its digits, which implies that leading zeros are still going to be displayed. Our test case

    123000 prints :

    0

    0

    0

    3

    2

    1

    here is the code, no while, no string, and no math library :

        private void printIntegerDigitsReversed(int i) {
            if (i / 10== 0 ){
                System.out.println(i);
            }
            else{
                printIntegerDigitsReversed(i%10);
                printIntegerDigitsReversed(i/10);
            }
        }
    
    0 讨论(0)
  • 2021-01-15 10:47
    public static void main(String[] args) {
        reverseDigits(98198187);
    }
    
    /* Recursive function to reverse digits of num */
    public static void reverseDigits(long number) {
        if (number < 10) {
            System.out.println(number);
            return;
        }
        else {
            System.out.println(number % 10);
            reverseDigits(number/10);
        }
    }
    
    0 讨论(0)
  • 2021-01-15 10:49

    This should work

     int rev = 0;
     int reverse(int num)
    {
        if (num < 10) {
            rev = rev*10 + num;
        }
        else {
            rev = rev*10 + (num % 10);
           num = reverse(num / 10);
    
        }
        return rev;
    }
    
    0 讨论(0)
  • 2021-01-15 10:50
       public class reverseIntRec{
            public static void main(String args[]) {
                System.out.println(reverse(91));
            }
            public static int reverse(int x) {
             String strX = String.valueOf(x);
              if (Math.abs(x) < 10)
                    return x;
              else 
                return x % 10 * ((int) Math.pow(10, strX.length()-1)) + reverse(x/10);
            }
        }
    

    Here is my answer return as integer. I converted x into string to see how many 0s you should multiply with.

    For example: reverse(91) returns 1 * 10 + reverse (9), and that returns 10 + 9 = 19.

    0 讨论(0)
提交回复
热议问题