我正在考虑这个问题,假设我有一个幂函数的递归版本:
double pow(double base, int power){
if(power == 1 || power == 0){
return base;
}
else if(power % 2 == 0){
double result = pow(base,power/2);
return result * result;
}
else{
double result = pow(base,(power-1)/2);
return result * result * base;
}
}
我的问题是如何将这个转换为while循环?
编辑:我知道这可以通过显式维护堆栈来完成,但在这种特殊情况下,有没有机会不这样做?