public static void main(String[]args){
multiply(2,4);
}
public static int multiply(int a, int b) {
if (b == 0) {
return 0;
}
return a + multiply(a, b - 1);
}
}
我有这个递归语句,我想知道它是如何工作的,这是思考它的正确方法吗?
return 2 + (2, 3);
return 2 + (2,2);
return 2 + (2,1);
return 2 + (2,0);
return 2 + 6;
return 2 + 4;
return 2 + 2;
return 2 + 0;
最佳答案
尽管看起来相当正确,但我不确定您所显示的内容(如果我正确解释的话)。您需要遍历方法的每次调用,直到遇到基本情况(在本例中为b == 0
时)。然后,您可以备份自己的方式,替换为返回的值。multiply(2,4)
返回2 + multiply(2,3)
。multiply(2,3)
返回2 + multiply(2,2)
。multiply(2,2)
返回2 + multiply(2,1)
。multiply(2,1)
返回2 + multiply(2,0)
。multiply(2,0)
返回0
。
因此,如果我们从下至上替换返回值,您将获得:return 2 + 2 + 2 + 2 + 0;
等于8
。 2 x 4 = 8
。
关于java - 递归乘法方法思考的正确方法吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37216819/