【发布时间】:2021-06-18 14:34:27
【问题描述】:
我想计算一个数字的幂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;
}
【问题讨论】:
-
你的参数解析完全关闭了。例如,您需要使用 atoi 将 argv 字符串转换为整数。试试
printf("%d\n", my_power(atoi(argv[1]), atoi(argv[2]))); -
提示:递归什么时候停止?
-
你永远不会减少你的
nb,因此nb != 0永远不会发生,因此程序会占用整个堆栈并死掉。
标签: c recursion segmentation-fault argv