我刚开始学习C。我试图通过计算找到一个int的最大值(实际上我试图通过相同的方法找到一个float的最大值,但我想测试它首先在 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));
但是当我运行这个东西时,我得到了这个:
我们返回基地 2147483647 计算的最大整数:0
我明确地放置了 printf 语句,这样我“确定”我只返回一次并且值是正确的。
请指出哪里出错了。
最佳答案
这是一个递归。您需要返回它的值。
所以最后一行应该是:
return max_int_helper(prev_i);
关于c - 计算 int 最大值的函数未返回所需结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33650790/