Java 双位数递归解释
我有一个问题要理解递归参数是如何计算的,这在这个问题中进行了解释。实现的代码如下所示:Java 双位数递归解释,java,recursion,Java,Recursion,我有一个问题要理解递归参数是如何计算的,这在这个问题中进行了解释。实现的代码如下所示: public static int doubleDigits(int i){ if (i == 0){ return 0; }else{ return doubleDigits(i / 10) * 100 + (i % 10) * 10 + i % 10; } } 如果int i=1234,则结果为: 11
public static int doubleDigits(int i){
if (i == 0){
return 0;
}else{
return doubleDigits(i / 10) * 100 + (i % 10) * 10 + i % 10;
}
}
如果int i=1234,则结果为:
11223344
我试图调试代码,但很难理解到底发生了什么
我已经检查了很多例子,我可以理解大多数情况下递归是如何工作的,但在本例中没有
我想得到一个简单易懂的解释,在这种情况下递归是如何工作的 递归总是通过解决一个较小的问题,然后添加到该解决方案中(或组合较小的解决方案)来工作 将数字的位数加倍,该数字包含除最后一个数字外的所有原始数字 然后将其乘以100,为剩余的两位数字留出空间,这两位数字加上
(i%10)*10+i%10
i%10
是输入编号的最后一位数字,它被添加到输出编号中两次
doubleDigits(1234 / 10) * 100 + (i % 10) * 10 + i % 10
112233 * 100 + 4 * 10 + 4 = 11223344
递归总是通过解决一个较小的问题,然后添加到该解决方案中(或组合较小的解决方案)来工作 将数字的位数加倍,该数字包含除最后一个数字外的所有原始数字 然后将其乘以100,为剩余的两位数字留出空间,这两位数字加上
(i%10)*10+i%10
i%10
是输入编号的最后一位数字,它被添加到输出编号中两次
doubleDigits(1234 / 10) * 100 + (i % 10) * 10 + i % 10
112233 * 100 + 4 * 10 + 4 = 11223344
doubleDigits
递归调用,直到满足中断条件。使用铅笔和纸张,设置i=12
并开始绘制东西。这个方法可以帮助你在100%的时间里理解递归。我会尝试使用铅笔和纸,听起来是个好主意。哈哈。双位数
会被递归调用,直到它满足中断条件。使用铅笔和纸,设置I=12
,然后开始画图。这个方法可以帮助你们在100%的时间里理解递归。我会用铅笔和纸试试,听起来是个好主意。哈哈。