C++ 递归幂

C++ 递归幂,c++,algorithm,function,recursion,C++,Algorithm,Function,Recursion,我试图用递归计算一个数的幂。这里我要做的是将基本参数设置为base*pow,并每次减少pow参数 我得到一个错误:source.cpp:21:1:警告:控件到达非void函数的末尾[-Wreturn type] int-power(int-base,int-pow){ 如果(功率!=0){ 返回功率(基本功率*pow,pow-1); } 如果(功率==0){ 返回基地; } } int main(){ int x=功率(2,3); cout您需要告诉编译器函数总是返回值(即使在本例中,它显然返

我试图用递归计算一个数的幂。这里我要做的是将基本参数设置为base*pow,并每次减少pow参数

我得到一个错误:
source.cpp:21:1:警告:控件到达非void函数的末尾[-Wreturn type]

int-power(int-base,int-pow){
如果(功率!=0){
返回功率(基本功率*pow,pow-1);
}
如果(功率==0){
返回基地;
}
}
int main(){
int x=功率(2,3);

cout您需要告诉编译器函数总是返回值(即使在本例中,它显然返回值)。此外,您的递归公式不正确。您可以这样做:

int power(int base, int pow){
    if(pow != 0){
        return base * power(base, pow - 1);
    }

    return 1;
}

这里有一个。

因为两个返回语句都在
if
语句中,编译器认为函数可能不会返回任何内容。即使它在逻辑上永远不会返回任何内容,编译器也看不到这一点。假设这项工作正常,只需将
return-1;
粘贴在末尾。您不需要第二个if,您可以在相反,因为您知道pow到达该点时总是0。这似乎是基于算术非恒等式b^p=(b*p)^(p-1)@DerekC。-如果您这样做,其他编译器会抱怨无法访问的代码。谢谢,我最终被引导去做相同的解决方案,因为上面的代码试图用幂乘基数。
int power(int base, int pow){
    if(pow != 0){
        return base * power(base, pow - 1);
    }

    return 1;
}