用于计算int的最大值而不返回期望结果的函数

时间:2015-11-11 12:42:49

标签: c

我刚刚开始学习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;我只返回一次,价值是正确的。

请指出我哪里出错了。

1 个答案:

答案 0 :(得分:6)

这是递归。你需要返回它的值。

所以在最后一行应该是:

return max_int_helper(prev_i);