翻转整数 Reverse digits of a number

来源:互联网 发布:好学近乎知 水印 编辑:程序博客网 时间:2024/06/09 19:39

两种方法翻转一个整数,顺序翻转和递归翻转

这里没考虑overflow的情况


递归的作用是使得反向处理,即从递归栈的最低端开始处理,通过画图可得。

如果是rec(num/10):

12345

1234

123

12

1         <-- 递归使得这个最先处理


package recursion;public class Reverse_digits_of_a_number {public static void main(String[] args) {int num = 123;System.out.println(reverse(num));System.out.println(rec(num));}public static int reverse(int num) {int rev = 0;while(num != 0) {rev = rev * 10 + num % 10;num /= 10;// /10相当于10进制的右移一位}return rev;}static int revNum = 0;static int base = 1;public static int rec(int num) {if(num == 0) {return num;}rec(num/10);// 相当于block在这里,直到递归到底,eg,num=123 -> 12 -> 1 -> 0revNum = revNum + base*(num%10);base *= 10;return revNum;}}

http://www.geeksforgeeks.org/write-a-c-program-to-reverse-digits-of-a-number/




0 0