【发布时间】:2023-03-14 09:48:02
【问题描述】:
我在这里有点困惑。我们看下面的代码:
bool testing(int i) {
if((i%2)==0) {
return true;
} else {
--i;
testing(i);
}
return false;
}
当我执行testing(5) 时,我期待函数返回 true,因为在某些时候,5 将变为 4,所以 4 % 2 == 0,所以函数将返回 true,但它只是' t 的情况。怎么了?
【问题讨论】:
-
你在调试器中单步执行了吗?然后你可以看到发生了什么
-
我认为你应该有
return testing(i)。它的方式调用testing(),但它继续并返回false。 -
作为优化说明,您最好使用
if((i&1)==0)而不是if((i%2)==0)。最好还是使用return testing(i-1)而不是--i ; return resting(i),尽管优化器无论如何都会优化那个。 -
@iAdjunct。谢谢你的建议。
-
@iAdjunct
i&1和i%2不等同于负数。