对于太多if else语句更好的方法

时间:2016-07-14 03:33:47

标签: algorithm if-statement math

if ( x < 275 && x >= 0 ) 
   f = 275
else if ( x < 450 && x >= 275) (right side comparison always previous left side default comparison value
   f = 450
else if ( x < 700 && x >= 450) 
   f = 700
else if ( x < 1000 && x >= 700) 
   f = 1000
..... and more 

有没有任何方法或数学公式方法来消除这个多个if if语句以减少代码需求?

3 个答案:

答案 0 :(得分:2)

这是C中的东西(但很容易移植到几乎任何东西)。它错过了几个条件(x <0和x>“最大已知”)当你只有4个值时,它没有增加太多的值,但是你拥有的值越多,它删除的代码就越多。请注意,它会减慢速度,但怀疑你会注意到它,除非你有一个巨大的可能值列表。

int getF(int x)
{
    /* possibleValues must be sorted in ascending order */
    int possibleValues[] = { 275, 450, 700, 1000 };
    for(int i = 0; i < sizeof(possibleValues) / sizeof(possibleValues[0]); i++)
    {
        int pv = possibleValues[i];
        if (x < pv)
        {
            return pv;
        }
    }
    /* fall thru "error" handle as you see fit */
    return x;
}

答案 1 :(得分:1)

if(x>0)
{
    if(x<275)
        f = 275;
    else if(x<450)
        f = 450;
    else if(x<700)
        f = 700;
    else if(x<1000)
        f = 1000;
    else //and so on

答案 2 :(得分:0)

假设x>0。只是避免if-else,这也足以满足条件 -

x<275 ? 275 : (x<450 ? 450 : (x<700 ? 700 : (x<1000 ? 1000 :

虽然如果有任何定义的输入类型范围,如INT,BIG等而不是275,450 ..您可以检查输入的类型。你也可以使用@ John3136建议的迭代。