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语句以减少代码需求?
答案 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建议的迭代。