Recursion - digits in reverse order

前端 未结 15 1058
一向
一向 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:33
    public static int reversDigits(int num) {
        if(num < 1) {
            return 0;
        }
    
        int temp = num % 10;
        num = (num - temp)/10;
        System.out.println(temp);
    
        return reversDigits(num);
    }
    

    This will print the digits one at a time in reverse order. You don't need to do System.out in your main method.

    0 讨论(0)
  • 2021-01-15 10:36

    I found I had to pick off the highest digit (on the left) and work towards the rightmost digit. I couldn't get a recursive one to work going from right to left.

    public static int reverseItRecursive(int number)
    {
        if (number == 0)
            return 0;
    
        int n = number;
        int pow = 1;
    
        while (n >= 10)
        {
            n = n / 10;
            pow = pow * 10;
        }
        return (n + reverseItRecursive(number - n*pow)*10);
    }
    
    0 讨论(0)
  • 2021-01-15 10:36

    This is very shortest/simplest way in two lines code:

        public static int reverseNumber(int n) 
        {
            System.out.println(n % 10);
            return (n/10 > 0) ? reverseNumber(n/10) : n;
        }
    
    0 讨论(0)
  • 2021-01-15 10:41

    This method reverse the integer and returns the result without using any string functions, Math, or by just printing

    public class ReverseNumber {
    
        public static void main (String[] args) {
            ReverseNumber rNumber = new ReverseNumber();
            System.out.println(rNumber.reverseRecursive(1234,0)); // pass zero to initialize the reverse number
        }
        public int reverseRecursive(int n, int reverse) {// n - the number to reverse
            // System.out.println(n);
    
            if (n != 0){
                reverse = reverse * 10;
                reverse = reverse + n %10;
                n = n/10;
            } else {
                  return reverse;
            }
        return reverseRecursive(n,reverse);
    }}
    
    0 讨论(0)
  • 2021-01-15 10:42
    //Reverse a number using recursion by bibhu.rank
    public class Rev_num {
        public static int revnum(int x){
            int temp1=x,temp2=1;
            if(x<10){
                return x;
            }
            while(temp1>=10){
                temp2*=10;
                temp1/=10;
            }
            if(((x%temp2) < (temp2/10))&& x%temp2!=0){
                int c=temp2;
                while(c> x%temp2){
                    c/=10;
                }
                c=temp2/c;
                temp2=x%temp2;
                return((temp1)+(c*revnum(temp2)));
            }
            temp2=x%temp2;
    
            return (temp1+(10*revnum(temp2)));
    
        }
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            System.out.println("Enter a number");
            Scanner y=new Scanner(System.in);
            System.out.println(revnum(y.nextInt()));
            y.close();
    
    
        }
    
    }
    
    0 讨论(0)
  • 2021-01-15 10:44
    //Try out this, recursion with singe variable using Math class.
    public static void main(String[] args) {
        // Let the number be 139
        int n=139;
        System.out.println("reverse is "+rev(n));
    }
    static int rev(int n){
        if (n==0)return 0;
        else {
            return n%10*(int) Math.pow(10,(double) (int)Math.log10(n))+rev(n/10);
        }    
    }
    
    0 讨论(0)
提交回复
热议问题