首页 > 解决方案 > 使用递归反转 int

问题描述

我想反转一个 int 但它不起作用。例如,123 应该返回 321,但打印出来的数字是 356。

public class x {
    public static void main(String[] args) {
        System.out.println(reverse2(123, 0));
    }
    
    static int reverse2(int a, int i) {
        if(a == 0) {
            return 0;
        } else {
            i = i*10 + a%10;
            System.out.println(i); 
            return i += reverse2(a/10, i);
        }
    }
}

标签: javarecursion

解决方案


您的代码应如下所示:

public class x {
    public static void main(String[] args) {
        System.out.println(reverse2(123, 0));
    }

    static int reverse2(int a, int i) {
        if(a == 0) {
            return i;
        } else {
            i = i*10 + a%10;
            System.out.println(i); 
            return reverse2(a/10, i);
        }
    }
}

你应该i在 a 是时返回0

i调用函数时不应添加,reverse2因为要添加i两次。


推荐阅读