2

我想编写一个 Java 风格的for循环,如下所示:

for (int i = 1; i <= 3; ++i) {
    for (int j = 1; j <= i-1; ++j) {
        System.out.println(i + " " + j);
    }
}

运行上述代码的输出将是

2 1
3 1
3 2

我尝试对此进行编码R如下:

for (i in 1:3) {
    for (j in 1:(i-1)) {
        print(sprintf('%d %d', i, j))
    }
}

但是,运行此R代码会给出输出

[1] "1 1"
[1] "1 0"
[1] "2 1"
[1] "3 1"
[1] "3 2" 

我意识到这种情况正在发生,因为1:0 = c(1,0). 使用seq(1,0)也不起作用,因为seq(1,0) = c(1,0). 编写这两个for循环的正确方法是什么?

4

1 回答 1

3

您可以将内部替换forwhile

for (i in 1:3) {
    j <- 1
    while (j < i) {
        print(sprintf('%d %d', i, j))
        j <- j + 1
    }
}

假设 Javafor与 C 类似,从语义上讲,这基本上也是在那里发生的。

于 2013-06-04T15:54:37.240 回答