Pow(x,y)函数的工作流程是什么?

问题描述 投票:0回答:4

我正在学习“ 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?

c# recursion workflow pow
4个回答
4
投票

好吧,让我们仔细研究一下。

首先,静态函数是无需实例化对象就可以调用的函数。同一类的所有对象共享一个签名。 double是C#中的一种类型,它在此处显示以显示该函数的最终输出类型。 Pow是函数的名称,double x,int y是按其类型描述的参数(名称不太好,但我们将其保留另一天)]

因此,x是一个数字,y是该数字的幂。这里有条件检查两个结果。如果y为0,则答案始终为1,简单的数学运算。否则,该函数将使用递归执行算术运算(它将再次调用自身,直到满足终止条件为止)。我们得到32的原因是因为2x2x2x2x2 =32。它是2的5的幂。]

我想您知道main和console.write是什么。


4
投票

首先要注意的是,这通常不是实现幂函数的方式。通过这种方式演示了递归。


3
投票

该方法基本上计算“ x升至y的幂”。它以recursive


1
投票

您好,递归并重复直到y = 1,然后返回2,然后在结束时返回4,8,16,32。 2 ^ 5 = 32

© www.soinside.com 2019 - 2024. All rights reserved.