使用模运算的递归解释java

时间:2017-04-26 07:19:54

标签: java recursion modular

任何人都可以解释这种方法是如何运作的。

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

我输入n = 15并得到6但我不明白该方法是如何工作的。请帮忙。谢谢。

5 个答案:

答案 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。

  • 现在它会检查(n / 10 == 0),即 15/10 == 0 这是假的,因为 15/10 = 5这是不等于0。

- 如果条件为false,则移动到要返回条件的else块 (n%10 +计算(n / 10)

即。 (15%10 + 15/10)== 5 + 1 == 6 - 因此返回 6。