递归函数返回分段错误

问题描述

我想计算一个数的 p 次方,结果得到 Segmentation fault。 此代码应该可以工作:

#include <stdio.h>

int my_power(int nb,int p)
{
    if (nb != 0){
        return nb*my_power(nb,p-1);
    }
    return 1;
}

int main(int argc,char argv[]){

    printf("%d\n",my_power(5,3));
    return 0;
}

解决方法

在您的代码中,您的递归永远不会结束。 将基本情况更改为 pb 就可以了。

,

我通过检查 D:/tmp/logstash/1output.txt 而不是 p 找到了解决方案,并且它奏效了。 我已经为负值和 0^0 的情况添加了条件。

nb

谢谢你的提示。