小编Ayb*_*erk的帖子

为什么`--var`和`var-1`的工作方式不同?

我写了一个代码来打印所有有效的n对括号组合.但是,在我第一次尝试时,算法输出所有组合两次,即.代码是:

public static void solve(char[] string, int open, int closed, int index)
{
    if (open < 0 || closed < open) {
        return;
    }

    if (open == 0 && closed == 0) {
        System.out.println(string);
    }

    if (open > 0) {
        string[index] = '(';
        solve(string, --open, closed, ++index);
    }

    if (closed > open) {
        string[index] = ')';
        solve(string, open, --closed, ++index);
    }
}
Run Code Online (Sandbox Code Playgroud)

我花了很多时间才能看出出了什么问题.我认为代码进入最后一个if分支比它应该更多.然后,在尝试不同的事情时,我意识到了变化

solve(string, --open, closed, ++index);
Run Code Online (Sandbox Code Playgroud)

solve(string, open-1, closed, ++index);
Run Code Online (Sandbox Code Playgroud)

改变了结果.这导致了一个java.lang.ArrayIndexOutOfBoundsException.最后,我用相应的算术运算(例如,++indexto index+1)替换了所有预增量操作,并且代码正确运行.

我的问题是,不应该 …

java pre-increment

3
推荐指数
1
解决办法
80
查看次数

最佳VCS和10个学生组的托管?

我们是一个由十人组成的学生团体.在接下来的几个月里,我们需要共同开展一个大项目.因此,我们认为如果我们使用VCS会更好.

该组中的许多人使用git,但我们需要一个提供私有存储库和协作的Web托管.据我所知,bitbucket提供免费的私人存储库,但我想问一下我们是否有更好的选择.

它不一定是git.我们乐于学习新事物.

git version-control project-management assembla

2
推荐指数
1
解决办法
216
查看次数