反转int - 非常具体的说明

时间:2015-04-05 16:46:34

标签: java recursion

我的老师要求我们创建一个int返回方法,该方法将仅使用3行反转传入的int,没有字符串,也不使用Math类,方法中没有循环,也不能使用实例变量或其他辅助方法。关于如何做到这一点的任何线索?我和我的朋友还没有弄清楚那些特定的参数。

2 个答案:

答案 0 :(得分:0)

试试这个...方法reverseDigits()以递归方式调用自身, 没有字符串,没有数学库,没有循环,但递归就在那里..

public class Test {
    static int rev_num = 0, base_pos = 1;
    public static int reverseDigits(int i){

          if(i > 0)
          {
            reverseDigits(i/10);
            rev_num  += (i%10)*base_pos;
            base_pos *= 10;
          }
          return rev_num;
        }
    public static void main(String[] args) {
        System.out.println(Test.reverseDigits(123));

    }

}

答案 1 :(得分:0)

这似乎适用于不会发生溢出的所有整数输入。请注意使用可变长度参数列表,用于在递归函数链中传递额外信息。

public class Reverse {
  public static int reverse(int... n) {
    if (n.length == 1) return reverse(n[0]/10,n[0]%10);
    else if (n[0] == 0) return n[1];
    else return reverse(n[0]/10,10*n[1]+n[0]%10);
  }

  public static void main(String[] args) {
    System.out.println(reverse(Integer.parseInt(args[0])));
  }
}