我刚刚开始学习C.我试图通过计算找到一个int的最大值(实际上我试图通过相同的方法找到一个浮点数的最大值,但我想先在int上测试它。 逻辑似乎没问题,但我的函数总是在最后返回0。
int max_int_helper(int base)
{
int prev_i, next_i, counter;
counter = 1;
prev_i = next_i = base + counter;
// found max
if (next_i < base) {
printf("WE RETURN BASE %d\n", base);
return base;
} else {
while(prev_i <= next_i)
{
prev_i = next_i;
counter *= 2;
next_i = base + counter;
}
max_int_helper(prev_i);
}
}
我在我的主要功能中调用它
printf("max int calculated: %d", max_int_helper(0));
但是当我运行这件事时我得到了这个:
WE RETURN BASE 2147483647 max int计算:0
我明确地提出了printf语句,以便我确定&#34;确定&#34;我只返回一次,价值是正确的。
请指出我哪里出错了。
答案 0 :(得分:6)
这是递归。你需要返回它的值。
所以在最后一行应该是:
return max_int_helper(prev_i);