gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 18:09:37 24 4
gpt4 key购买 nike

我正在通过“sololearn”和 udemy 类(class)来尝试学习 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?

最佳答案

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

顺便说一句,让我们看看当您调用 Pow(2, 5) 时会发生什么。 :

Pow(x = 2, y = 5)
-> return 2 * Pow(2, 4)
<- 2 * 16 = 32

Pow(x = 2, y = 4)
-> return 2 * Pow(2, 3)
<- 2 * 8 = 16

Pow(x = 2, y = 3)
-> return 2 * Pow(2, 2)
<- 2 * 4 = 8

Pow(x = 2, y = 2)
-> return 2 * Pow(2, 1)
<- 2 * 2 = 4

Pow(x = 2, y = 1)
-> return 2 * Pow(2, 0)
<- 2 * 1 = 2

Pow(x = 2, y = 0)
-> return 1 (because y == 0)
<- 1

要阅读递归调用堆栈的这种表示,请从上到下查看参数如何变化;然后从底部到顶部查看返回值(我用 <- 表示)。

关于c# - Pow(x,y) 函数的工作流程是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58659575/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com