任何人都可以解释这种方法是如何运作的。
public static int calculate(int n){
if (n/10 == 0)
return n;
else
return (n % 10 + calculate(n/10));
}
我输入n = 15并得到6但我不明白该方法是如何工作的。请帮忙。谢谢。
答案 0 :(得分:2)
该方法计算数字的总和。
如果n
小于10,您只需返回n
(因为单个数字的数字之和就是数字本身)。
否则,您将最低有效数字(即n % 10
)添加到数字n / 10
的数字总和(递归计算)。
答案 1 :(得分:1)
它是这样的:
calculate(15);
评估为
15%10 + calculate(1);
评估为
5 + 1;
到底哪个;总计最多6个。
换句话说;以上是对数字中所有数字求和的递归方法。您可以使用一个简单的循环轻松地重写它,以避免递归构造。
答案 2 :(得分:1)
对于n = 15,这是它的工作原理
15/10> 0,所以执行else条件。
15%10 +计算(15/10),即5 +计算(1)。
对于n = 1;
再次调用该方法由于1/10 == 0,返回1
然后将此1添加到5。
因此答案是6。
所以这个函数的作用是返回构成数字的数字之和。
答案 3 :(得分:0)
它会切断最右边的数字并以其余数字递归移动。 (第5行) 如果我们只剩下一个数字(第2行),它也会被加到总和中,算法结束。 (第3行)
答案 4 :(得分:0)
在这个例子中有一个if else条件,所以在输入参数的基础上有2个条件'
- 首先检查if条件(n / 10 == 0)。
将输入视为 n = 15。
- 如果条件为false,则移动到要返回条件的else块 (n%10 +计算(n / 10)
即。 (15%10 + 15/10)== 5 + 1 == 6 - 因此返回 6。