我最近参加了一次面试(使用Collabedit进行电话面试),但是表现不佳。以下是问题:
编写一个 O(lg n) 迭代算法,用于查找 x^y 的值 (x 是 double 类型,y>0 是 int 类型)。
我首先尝试了递归分治方法,并尝试将其转换为迭代方法……但是我做不到:S 是否有一种方法可以将递归方法转换为迭代方法呢?(对于尾递归非常容易,但如果递归函数有两个可能的递归调用,这取决于条件来决定哪个调用将被调用)
我最近参加了一次面试(使用Collabedit进行电话面试),但是表现不佳。以下是问题:
编写一个 O(lg n) 迭代算法,用于查找 x^y 的值 (x 是 double 类型,y>0 是 int 类型)。
我首先尝试了递归分治方法,并尝试将其转换为迭代方法……但是我做不到:S 是否有一种方法可以将递归方法转换为迭代方法呢?(对于尾递归非常容易,但如果递归函数有两个可能的递归调用,这取决于条件来决定哪个调用将被调用)
double result = 1;
double multiplier = a;
for (double multiplier = a; b != 0; multiplier *= multiplier, b /= 2) {
if (b % 2 == 1) {
result *= multiplier;
}
}