gpt4 book ai didi

c++ - 读取三重嵌套 for 循环

转载 作者:行者123 更新时间:2023-11-30 01:40:46 26 4
gpt4 key购买 nike

我的代码如下。我的困惑发生在第二和第三个循环中。为什么结果返回 1*** 然后 12** 然后 123* 然后 1234.. 我得到 j 循环被重置为 0 但它不会在 j<=i 为真时重新进入 k 循环吗?

for(int i = 1; i <= 4; i++)
{
for(int j = 1; j <= i; j++)
cout << j;
for(int k = 4 - i; k >= 1; k--)
cout << "*";

cout << endl;
}

最佳答案

先澄清一下:

首先:j 永远不会重置为 0,而是重置为 1。

其次:恕我直言,这不是三层嵌套的 for 循环,它是(但不需要让您的代码像您描述的那样工作):

for(...) {
for(...) {
for(...) {
}
}
}

令你困惑的是:

漂亮地打印你的代码:

for(int i=1; i<=4; i++) {
// Write the digits 1..i (1, 12, 123, 1234)
for(int j=1; j<=i; j++) {
std::cout << j;
}

// Write the stars (***, **, *)
for(int k=(4-i); k>=1; k--) {
std::cout << "*";
}

std::cout << std::endl;
}

想象以下序列:

// Iteration  | i | j | k | String
// 1 | 1 | 1 | 3 | 1*
// 2 | 1 | 1 | 2 | 1**
// 3 | 1 | 1 | 1 | 1***\n
// 4 | 2 | 1 | - | 1
// 5 | 2 | 2 | - | 12
// 6 | 2 | 2 | 2 | 12*
// 7 | 2 | 2 | 1 | 12**\n
// 8 | 3 | 1 | - | 1
// 9 | 3 | 2 | - | 12
// 10 | 3 | 3 | - | 123
// 11 | 3 | 3 | 1 | 123*\n
// 12 | 4 | 1 | - | 1
// 13 | 4 | 2 | - | 12
// 14 | 4 | 3 | - | 123
// 15 | 4 | 4 | - | 1234\n

重新进入k循环,如果初始索引:

// k:=(4-i) >= 1

因此进入 k-Loop 完全取决于索引 i。

数学上:

//         (4-i) >= 1
// <=> -i >= (1-3)
// <=> -i >= -3
// <=> i <= 3

所以重新进入k循环,只要i <= 3。

关于c++ - 读取三重嵌套 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42662814/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com