递归函数相乘

use*_*643 1 c# recursion multiplication

有人可以解释一下这个递归函数是怎么做的吗?我很难理解如何使用+来增加数字

        static int Multiply(int x, int y)
        {
            if (y == 1)
            {
                return x;
            }
            else
            {
              return x + Multiply(x, y - 1);
            }
        }
Run Code Online (Sandbox Code Playgroud)

Pre*_*gha 8

记住你的基本算术.

X * 2 = X + X
X * 3 = X + X + X
Run Code Online (Sandbox Code Playgroud)

等等

所以我可以分解X * 3

X * 3 = X + (X * 2)
Run Code Online (Sandbox Code Playgroud)

所以在你的功能中:

X * Y = X + (X * (Y-1))
Run Code Online (Sandbox Code Playgroud)

因此

X * Y = Multiply(X, Y) =  (X + Multiply(X, Y -1))
Run Code Online (Sandbox Code Playgroud)

这本质上就是递归.