我想这个问题,说我有一个幂函数的递归版本:如何将此递归转换为循环?
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循环?
编辑:我知道这可以通过明确维护堆栈来完成,但在这种特殊情况下有没有这样做的机会?
好像功课。 – devnull
@devnull我是一位助教,被问到这个问题,但不知道如何回答 – dorafmon
这也不是真正的尾递归,因为尾递归授予的优化不适用于这种情况。编辑它肯定不是尾递归。 – Dan