java - 使用递归反转 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);
}
}
}
解决方案
您的代码应如下所示:
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
两次。
推荐阅读
- html - CSS 和选择器 - 为什么质量分组不适用于 h1、h2 等?
- python - 使用 Python 对多个用户输入进行数据验证
- python-3.x - Python中的多个链表具有功能删除节点,并且在一段时间内没有条件和
- java - 在寻求枚举作为输入时不断出现“无枚举常量”错误
- javascript - 尽管设置了 CONSUL_HTTP_TOKEN,但领事 acl 创建权限被拒绝
- delphi - Delphi中评估的布尔表达式顺序?
- reactjs - 我们应该使用类型或接口来定义功能 Typescript React 组件的属性吗?
- cucumber - 如何组织重叠多个特征的场景
- ruby-on-rails - 使用 ruby-git 从 Ruby 调用 Git.open 时出错
- jenkins - 詹金斯将变量传递出脚本部分