You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用while循环实现的Java max函数的工作原理是什么?

代码原理说明

你提供的代码如下:

public static int max(int b, int a ,int d) {
    int o =0;
    while (b!=0 && a!=0 && d!=0)
    {
        b++;
        a++;
        d++;
        o--;
    }
    return o;
}

该函数仅能正确处理三个负整数的最大值求解场景,你测试时能正常运行应该是所用的测试用例均为负整数,若输入包含0或正整数会出现错误结果甚至死循环,具体运行逻辑如下:

  • 循环的触发条件是三个入参b、a、d均不等于0,只要有任意一个入参变为0,循环就会立刻终止,返回变量o的取值
  • 每次循环执行时,三个入参都会自增1,同时计数变量o会自减1
  • 对于负整数来说,数值越大就越接近0,比如-1 > -3 > -5,因此三个负整数中的最大值,会是三个数里最先通过不断自增变为0的那个
  • 假设三个负整数的最大值为-k(k为正整数),则需要循环k次才能把这个最大值变为0,循环终止时o刚好从初始的0自减了k次,取值为-k,正好等于三个数的最大值

举个实际测试示例:输入三个数-6、-2、-4,最大值为-2

  1. 第一次循环后:三个数变为-5、-1、-3,o取值为-1
  2. 第二次循环后:三个数变为-4、0、-2,o取值为-2
  3. 此时第二个入参已经变为0,循环终止,返回-2,正好是三个数的最大值

额外注意该函数的局限性:

  • 若输入包含0,循环不会执行,直接返回0,和实际最大值不符
  • 若输入包含正整数,正整数自增永远不会变为0,会触发死循环
  • 若有多个最大值,比如两个-2,逻辑依然成立,第一个达到0的变量依然是最大值,返回结果正确

内容的提问来源于stack exchange,提问作者annas99

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 04:36:08