如何通过用 case 语句替换 if-then-else 语句来优化我的算法?

问题描述 投票:0回答:1

可以考虑使用 case 而不是 if-then-else 语句。如果有不同的情况,那么代码就会进行正确的选择。这将节省时间,而无需经历所有事情。

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语句代替if-then-else。

data-structures nested-loops pseudocode
1个回答
0
投票

假设

f_r_type
o_r_type
的可能值为“C”和“D”(已在注释中确认),需要注意以下几点:

  • 当执行

    if o_r_type == "D" AND f_r_type == "D" then
    时,该条件将始终为真:所有其他可能性已被先前的
    if
    条件排除。

  • 相关:较长的

    if
    条件(具有三个组合测试)测试与下一个
    if
    条件相反的条件,因此您可以仅使用下一个条件来减少代码。

  • 前两个

    if
    语句可以合并为一个
    if
    语句。

  • 由于只有一项操作已执行或未执行 (

    v_b.add(i)
    ),因此您只需要一个
    if
    语句即可将其所有条件组合为一个。

如果你的代码是这样写的,也会做同样的事情:

if (f_op == v_op AND ((o_r_type == "D" AND f_r_type == "D") 
                       OR (o_op_cat == f_op_cat)) then
    v_b.add(i)

这里使用

switch
语句没有任何好处,因为你实际上只有一种情况。

© www.soinside.com 2019 - 2024. All rights reserved.