-4
// (1)
for (int iter = 1; iter <= VERTEX_SIZE; iter ++) {
    if (visit[iter]) continue;
    dfs(iter);
}

// (2)
for (int iter = 1; iter <= VERTEX_SIZE; iter ++) {
    if (!visit[iter]) {
        dfs(iter);
    }
}

哪个代码更优化?我只是对此感到好奇。

4

2 回答 2

4

对于任何甚至是半体面的编译器,这根本不会产生影响。生成的机器代码将完全相同。如果您仍然想确定,请对其进行基准测试。

选择你认为最易读的那个。

于 2012-10-13T13:50:46.070 回答
0

没有区别。选择你认为最好的那个。你用第一种方式编译的每一个程序,肯定也可以用第二种方式编译,而且运行时间是一样的。

注意:我会使用第二种方式;我认为它更具可读性,并且我见过的大多数 DFS 实现(在 C++ 和 pheudocode 中)都使用它。

于 2012-10-13T14:34:39.597 回答