我正在学习“ 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));
}
请原谅我的编码错误。我正在尝试在移动设备上执行此操作,这很困难,答案是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?
好吧,让我们仔细研究一下。
首先,静态函数是无需实例化对象就可以调用的函数。同一类的所有对象共享一个签名。 double是C#中的一种类型,它在此处显示以显示该函数的最终输出类型。 Pow是函数的名称,double x,int y是按其类型描述的参数(名称不太好,但我们将其保留另一天)]
因此,x是一个数字,y是该数字的幂。这里有条件检查两个结果。如果y为0,则答案始终为1,简单的数学运算。否则,该函数将使用递归执行算术运算(它将再次调用自身,直到满足终止条件为止)。我们得到32的原因是因为2x2x2x2x2 =32。它是2的5的幂。]
我想您知道main和console.write是什么。
首先要注意的是,这通常不是实现幂函数的方式。通过这种方式演示了递归。
该方法基本上计算“ x
升至y
的幂”。它以recursive
您好,递归并重复直到y = 1,然后返回2,然后在结束时返回4,8,16,32。 2 ^ 5 = 32