这样能很快提高速度吗?
最近遇到这样一个递归的问题:
- C/C++ code
void dfs(参数){if (表达式) dfs(参数); <--------else if (表达式) for (int i = 0; i < 100; i++) { dfs(参数); 表达式; }}- C/C++ code
void dfs(参数){ for (int i = 0; i < 100; i++) { if (表达式) dfs(参数); <-------- else if (表达式) dfs(参数); 表达式; }}上面两段代码的结果是一样的,但是上面一段代码会比下面这一段快10倍以上,这是为什么呢?
[解决办法]
下面那个无论表达式是否成立,都要循环。
上面那个如果表达式不成立,就不循环了。而且编译器可以对上面那个进行优化,以提高速度。