【发布时间】:2016-10-12 06:10:48
【问题描述】:
我写了一个接受两个整数的递归函数。如果第一个数字的位数等于第二个数字,则该函数返回true,否则该函数返回false。
该函数始终返回 true。
我做错了什么?
代码:
public static boolean amountEqual(int num1, int num2) {
int sum1 = 0, sum2 = 0;
if (num1 == 0 && num2 == 0 && sum1 == sum2)
return true;
else if (num1 == 0 && num2 == 0 && sum1 != sum2)
return false;
sum1 += num1 % 10;
sum2 += num2 % 10;
return amountEqual(num1 / 10, num2 / 10);
}
谢谢
【问题讨论】:
-
你的两个变量
sum1和sum2的目的是什么? -
每个调用都有自己的
sum1和sum2版本。如果您不想在调用之间共享状态,请将其作为参数传递。避免使用全局/实例变量的冲动。 -
sum1 = 第一个数字的所有数字之和 Sum2 = 第二个数字的所有数字之和