gpt4 book ai didi

algorithm - 我对幂函数中的递归感到困惑

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:48:04 26 4
gpt4 key购买 nike

以下是获得权力的代码(数学)。

  1. >我很困惑,看起来每个问题都被分成一个子问题,每个子问题的大小都是两个,所以它没有形成一棵树,因为通常对于递归“树”你需要两次递归调用。只有一次递归调用,它就像一个简单的列表。 .但它是一个递归函数,阶乘和许多其他递归函数形成树,它们的递归看起来是一样的。

2.如果是一棵树,那么它是遍历所有路径还是单条路径?

     public int GetPower(int k, int n)
{
if (n == 0)
{
return 1;
}
else {
int t = GetPower(k, n / 2);
if((n%2)==0)
{
return t*t;
}
else{
return k*t*t;
}
}
}

请帮助我,我的困惑需要一些解释。

编辑

              (2,20)    ->    (2,10)  ->     (2,5)  ->    (2,2)   ->  (2,1)  ->   (2,0)
1048576 <- 1024 <- 32 <- 2^4*2 <- 2*2 <- 2 <- 1

最佳答案

当您想计算 GetPower(2,6) 时,您需要 2^6 的答案。想象一下,如果您得到 2^3 的答案是 8,您会很高兴。现在您只需乘以 2^3 * 2^3 =8*8=64。

这是使用的逻辑。

对于奇数幂,例如:

2^5

我们计算 2^2 的答案并执行:

2 * 2^2 * 2^2

非常简单的技巧,但将时间复杂度从 O(N) 更改为 O(log N),其中 N 是幂。

关于algorithm - 我对幂函数中的递归感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17239655/

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