C 递归POW:警告:控件可能到达非void函数的末尾
这是一个实现pow的递归函数。 为什么编译器抛出警告:“警告:控件可能到达非void函数的末尾” 一种解决方案是在函数底部添加“return 0”,但覆盖率不会达到100%,那么如何解决这个问题呢 谢谢C 递归POW:警告:控件可能到达非void函数的末尾,c,recursion,warnings,C,Recursion,Warnings,这是一个实现pow的递归函数。 为什么编译器抛出警告:“警告:控件可能到达非void函数的末尾” 一种解决方案是在函数底部添加“return 0”,但覆盖率不会达到100%,那么如何解决这个问题呢 谢谢 double pow_recur( double base, int exponent ) { if (base == 0) { return 0; } if (exponent == 0) {
double pow_recur( double base, int exponent )
{
if (base == 0) {
return 0;
}
if (exponent == 0) {
return 1.0;
} else if (exponent > 0) {
if (exponent % 2 == 0) {
return pow_recur(base * base, exponent / 2);
}
if (exponent % 2 == 1) {
return base * pow_recur(base * base, (exponent - 1) / 2);
}
} else {
return 1.0 / pow_recur(base, -exponent);
}
}
在检查指数是否为偶数时,将其更改为if-else,警告将消失。不需要同时检查偶数和奇数,如果不是偶数,则必须是奇数。您的编译器不够聪明,无法知道指数%2只能是0或1。它一般假设指数%2是一个整数。如果既不是0也不是1,则函数pow_recur不返回任何内容。我们知道这永远不会发生,但编译器不会。@JL2210为什么P