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

C#实现偶数除以2直到得到奇数,代码仅执行一次如何修复

问题分析

你现有代码不符合预期的核心原因有两点:

  • 单次偶数判断并执行除以2的操作后直接调用了return语句,会直接终止方法运行,因此仅能完成一次除法运算
  • 外层的for循环逻辑无意义,不需要基于初始value值做固定次数的遍历判断
修复方案

直接使用while循环判断数值是否为偶数,只要满足偶数条件就持续执行除以2的操作即可,实现代码如下:

public int InchFraction(int value)
{
    // 只要当前值是偶数就持续除以2
    while (value % 2 == 0)
    {
        value /= 2;
    }
    return value;
}

该实现时间复杂度为O(log n),远优于递归实现的额外栈空间开销,同时能完全匹配需求:

  • 调用InchFraction(16)时,会依次计算16→8→4→2→1,最终返回奇数1
  • 调用InchFraction(12)时,会依次计算12→6→3,最终返回奇数3
  • 输入本身就是奇数时会直接返回原数值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 12:36:03