【发布时间】:2013-03-16 19:17:47
【问题描述】:
我想知道遵循 if 语句的复杂性
if (isTrue()) //case 1
VS
if(isTrue()==true) //case 2
而isTrue定义为
boolean isTrue(){
//lots of calculation and return true false based on that.
return output;
}
我在想,if (isTrue()) 的复杂性低于if(isTrue()==true),因为在案例 2 中需要对等号进行额外比较。
空间复杂度如何?
有什么不同的想法吗?
【问题讨论】:
-
如何进行额外比较?
-
因为编译器必须检查函数输出的右侧值,然后使用 if 条件进行测试
-
@minhaz 大多数编译器可能会完全优化那些
ifs,因为isTrue只会返回true。 -
@minhaz
if (foo)和if (foo == true)之间没有区别。if (foo)仍然需要检查foo是否属实。 -
@DaveNewton 这不正确。按照您给出的相同逻辑,'if (foo == true)' 必须检查 'foo == true' 是否为真。预计编译器会优化掉所有多余的杂物,但这不是一回事。
标签: java c complexity-theory time-complexity space-complexity