如何理解该编程题逻辑?迭代器出现次数疑问解析
编程任务
输入两个数字
outerNumber和innerNumber。外层循环遍历区间[0, outerNumber),内层循环遍历区间[0, innerNumber)。在内层循环中,打印两个迭代器的和。
区间说明
[x, y] 表示包含x和y在内的所有从x到y的数字 [x, y) 表示包含x但不包含y的所有从x到y的数字 (x, y] 表示不包含x但包含y的所有从x到y的数字 (x, y) 表示既不包含x也不包含y的所有从x到y的数字
示例输入
3 5
预期输出
0 1 2 3 4 1 2 3 4 5 2 3 4 5 6
解析
outerIterator=0, innerIterator=0 → 0+0 = 0 outerIterator=0, innerIterator=1 → 0+1 = 1 outerIterator=0, innerIterator=2 → 0+2 = 2 outerIterator=0, innerIterator=3 → 0+3 = 3 outerIterator=0, innerIterator=4 → 0+4 = 4 outerIterator=1, innerIterator=0 → 1+0 = 1 outerIterator=1, innerIterator=1 → 1+1 = 2 outerIterator=1, innerIterator=2 → 1+2 = 3 outerIterator=1, innerIterator=3 → 1+3 = 4 outerIterator=1, innerIterator=4 → 1+4 = 5 outerIterator=2, innerIterator=0 → 2+0 = 2 outerIterator=2, innerIterator=1 → 2+1 = 3 outerIterator=2, innerIterator=2 → 2+2 = 4 outerIterator=2, innerIterator=3 → 2+3 = 5 outerIterator=2, innerIterator=4 → 2+4 = 6
问题解答
这是嵌套循环的执行逻辑导致的:
- 外层循环范围是
[0, outerNumber),示例里outerNumber=3,所以outerIterator会取0、1、2三个值,外层循环总共跑3次。 - 每跑一次外层循环,内层循环会完整执行一遍。内层循环范围是
[0, innerNumber),示例里innerNumber=5,所以innerIterator会取0、1、2、3、4五个值,内层循环每次都跑5次。 - 因此,每个
outerIterator的值都会和5个不同的innerIterator值配对,所以0、1、2各出现5次;而innerIterator的0-4,会分别和3个outerIterator值配对,每个数值也就出现3次。
内容的提问来源于stack exchange,提问作者Vinayaka
相关产品推荐
相关产品推荐

