我想這個問題,說我有一個冪函數的遞歸版本:如何將此遞歸轉換爲循環?
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