我刚刚开始学习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语句,所以我"确定"我只返回一次,值是正确的.
请指出我哪里出错了.
这是一个递归.您需要返回它的值.
所以在最后一行它应该是:
return max_int_helper(prev_i);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
103 次 |
| 最近记录: |