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;

等于82 x 4 = 8

关于java - 递归乘法方法思考的正确方法吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37216819/

10-13 09:51