Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.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,我试图创建一个方法来计算整数的和,因为整数被分解为单个整数 例如,2546变为2、5、4、6。然后我把这些加在一起 2+5+4+6=17 该方法将递归运行 我以非递归方式编写了这个程序,但在那个程序中,我有一个变量来存储计算的总和 public static int calcSum(int n){ if (n>0) return ((n%10) + calcSum(n/10)); else return 0; } 这个程序可以运行,我只是不明

我试图创建一个方法来计算整数的和,因为整数被分解为单个整数

例如,2546变为2、5、4、6。然后我把这些加在一起

2+5+4+6=17

该方法将递归运行

我以非递归方式编写了这个程序,但在那个程序中,我有一个变量来存储计算的总和

public static int calcSum(int n){
    if (n>0)
    return ((n%10) + calcSum(n/10)); 
    else
        return 0; 
 }

这个程序可以运行,我只是不明白总和是如何存储的。

总和没有存储在任何变量中(除非递归方法的调用方将结果存储在某个变量中)

递归方法将总和返回给调用方,而不将其存储在变量中:

return ((n%10) + calcSum(n/10)); 
如果输入为
0
,则返回
0

calcSum(2546) returns 6 + calcSum(254)
calcSum(254) returns 4 + calcSum(25)
calcSum(25) returns 5 + calcSum(2) 
calcSum(2) returns 2 + calcSum(0)
calSum(0) returns 0
因此,当递归展开时:

calcSum(2) returns 2 + 0 == 2
calcSum(25) returns 5 + 2 == 7
calcSum(254) returns 4 + 7 == 11
最后

calcSum(2546) returns 6 + 11 == 17