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

如何通过用case语句替换if-then-else优化算法及改写伪代码?

用Case语句替代嵌套If-Then-Else伪代码的修改方案

原伪代码逻辑

原代码是多层嵌套的If判断,核心逻辑如下:

If f_op is v_op then
    If o_op == f_op then
        If (o_r_type == "C" AND f_r_type == "D") OR 
           (o_r_type == "D" AND f_r_type == "C") OR 
           (o_r_type == "C" AND f_r_type == "C") then
             do nothing 
        else if o_r_type == "D" AND f_r_type == "D" then
            v_b.add(i)

     else if o_op_cat == f_op_cat then
            v_b.add(i)

修改后的Case版本

我们可以把嵌套条件拆解为多维度的Case匹配,让逻辑更清晰且无需遍历所有条件:

Case f_op of
    v_op:
        // 组合o_op匹配状态、o_r_type、f_r_type作为判断条件
        Case (o_op == f_op, o_r_type, f_r_type) of
            (True, "C", "D"), (True, "D", "C"), (True, "C", "C"):
                do nothing
            (True, "D", "D"):
                v_b.add(i)
            (False, *, *):  // *表示任意值,匹配o_op不等于f_op的所有情况
                If o_op_cat == f_op_cat then
                    v_b.add(i)
        End Case
    default:  // 处理f_op不等于v_op的情况,原代码未涉及,保持空操作
        do nothing
End Case

修改思路

  • 外层Case直接锁定f_op等于v_op的场景,其他情况直接跳过,不用做无效判断
  • 内层用多条件组合匹配的Case,把o_op是否和f_op相等、o_r_type、f_r_type三个条件打包,直接命中预设分支:
    • 碰到那三种不需要操作的类型组合,直接啥也不干
    • 碰到D&D组合时,执行添加操作
    • 当o_op不等于f_op时,再检查分类是否匹配,符合就执行添加
  • 这种写法摆脱了多层嵌套的If,逻辑一目了然,而且Case会直接跳转到对应分支,不用挨个遍历条件,效率更高

内容的提问来源于stack exchange,提问作者husin alhaj ahmade

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 15:16:12