Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 双位数递归解释_Java_Recursion - Fatal编程技术网

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%的时间里理解递归。我会用铅笔和纸试试,听起来是个好主意。哈哈。