我正在通过“ sololearn”和udemy课程尝试学习C#。我正在尝试挑战,但无法弄清楚下面的代码如何与32结合使用(因为32是此处的正确答案,我试图找出原因)。有人可以向我解释这个过程吗,我认为调用自身的方法正在抛出我。
static double Pow(double x, int y)
{
if (y == 0)
{
return 1.0;
}
else
{
return x * Pow(x, y - 1);
}
}
static void Main()
{
Console.Write(Pow(2, 5));
}
Run Code Online (Sandbox Code Playgroud)
请原谅我的编码错误。我正在尝试在移动设备上执行此操作,这很困难,答案是32。有人可以解释为什么吗?
编辑:这里的道歉是我的工作方式。将2和5传递给Pow,检查是否y == 0为假,现在它是有效的,y == 5因此x * pow(x, y-1)公式将处于活动状态。X仍然是2,y现在是4,这意味着它再次无法检查是否等于0,此循环一直进行到返回1.0,x一直保持在2 2 * 1.0 = 2而不是32?