以下是获得权力的代码(数学)。
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
答案 0 :(得分: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 是权力。
答案 1 :(得分:1)
是的,它正在创建一个隐藏的树,它只横过一条路径