Java 递归方法,用于查找两个给定整数中的位数之间的差异

Java 递归方法,用于查找两个给定整数中的位数之间的差异,java,recursion,sum,digits,Java,Recursion,Sum,Digits,输入是两个给定的整数,都是N个数字,输出必须是差的结果。例如,第一个数字是1234,第二个数字是1,输出必须是3。我试图编写一个递归方法,但它不允许我减去它们,说需要两个整数,但找到了一个。 以下是迄今为止的代码: public static int digitDiffer (int a, int b){ int sumA = 0; int sumB = 0; if(a == 0 && b==0){ return 0; } else {

输入是两个给定的整数,都是N个数字,输出必须是差的结果。例如,第一个数字是1234,第二个数字是1,输出必须是3。我试图编写一个递归方法,但它不允许我减去它们,说需要两个整数,但找到了一个。 以下是迄今为止的代码:

public static int digitDiffer (int a, int b){
   int sumA = 0;
   int sumB = 0;
   if(a == 0 && b==0){
     return 0;
   }
   else {
     sumA += a % 10;
     a /= 10;
     sumB += b % 10;
     b /= 10;
   }
   return digitDiffer (sumA-sumB);
 }
这是我的方法

public static int digitDiffer (int a, int b){
        // I will divide a and b by 10 until one of them is 0
        if(a != 0 && b != 0) return digitDiffer(a/10, b/10);

        //if b == 0 and a != 0 then I will count how many times I can divide a by 10 until it becomes 0
        if(a != 0 && b == 0) return 1 + digitDiffer(a/10, 0);

        // if a == 0 and b != 0 then I will count how many times I can divide b by 10 until it becomes 0
        if(a == 0 && b != 0) return 1 + digitDiffer(0, b/10);
        return 0;
    }

输出示例:对于
a=12345
b=1
来说,输出将是:
4

您的参数是
sumA-sumB
。更改为
sumA,sumB
@moh-ro,但这不会返回差值,是吗?为什么输出必须是3?为什么结果是3?是因为1234是四位数字,1是一位数字,所以4-1->3?您已经拥有的代码几乎完全不同于您需要执行的任务;这就像你可以把一辆自行车变成一辆宝马车,因为这两辆车都是轮式车辆(;->)。这太完美了,你能解释一下你是如何将输出设置为返回一个int的,而在我的代码中它不允许我返回吗?@Ohande你上面的函数有两个参数,你只提供了一个参数。无论如何,我建议您花一些时间研究递归主题,以便更好地理解它是如何工作的。