python 和 c++ 的结果对于嵌套的 for 语句是不同的

The results of python and c++ are different for nested for statements

本文关键字:嵌套 for 语句 是不同 于嵌套 c++ 结果 python      更新时间:2023-10-16

我正在用c ++和python编写算法。

算法是输出when n = 7, (0,1,2,3), (0,1,2,4) ... (3,4,5,6)我通过嵌套的 for 语句实现了这一点,但 c ++ 和 python 的值是不同的。

你能告诉我为什么吗?

而且,例如,当我在范围内使用 i 时,我是否总是从 0 开始?如果有办法设置range()的初始值,请告诉我。

C++

for(int i = 0; i < n; ++i)
        for(int j = i+1; j < n; ++j)
            for(int k = j+1; k < n; ++k)
                for(int l = k+1; l < n; ++l)
                    cout << i << " " << j << " " << k << " " << l << endl;

for i in range(0, n):
        for j in range(i+1, n):
            for k in range(i+2, n):
                for l in range(i+3, n):
                    print(i, j, k, l)

循环中有不同的索引:

for(int k = j+1; k < n; ++k)
for(int l = k+1; l < n; ++l)

 for k in range(i+2, n):
 for l in range(i+3, n):

基本上,C++代码中内部循环中的索引会相应地更改为它们上方一行的循环。在 python 代码中,所有索引仅在第一个循环更改时更改。

由@khelwood提供:

k从C++代码中的j+1开始,在 Python 代码中i+2。您的l起始值也不一致。代码不等效。

此外,您还可以将初始值添加为range()中的第一个参数