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

Mat*_*eré 0 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);
  }
}
Run Code Online (Sandbox Code Playgroud)

我在我的主要功能中这样称呼它

printf("max int calculated: %d", max_int_helper(0));
Run Code Online (Sandbox Code Playgroud)

但是当我运行这个东西时,我得到了这个:

WE RETURN BASE 2147483647 max int calculated:0

我明确地把printf语句,所以我"确定"我只返回一次,值是正确的.

请指出我哪里出错了.

Iga*_* S. 6

这是一个递归.您需要返回它的值.

所以在最后一行它应该是:

return max_int_helper(prev_i);
Run Code Online (Sandbox Code Playgroud)