我发现很难理解for循环是如何工作的,特别是当有多个循环时。如果f3(1,-2,1),那么这个函数返回什么?也是n6 =?语言是C.
int f3(int n6, int n7, int n8) {
int i, j;
for(i = 0; i <= n8; i++) {
for(j = i; j > n7; j--) {
n6 *= 2;
}
}
return n6;
}
答案应为32。
答案 0 :(得分:2)
此函数需要多个int
作为输入。
n7
和n8
是迭代输入。或者它们为循环提供长度值。
第一个for
循环循环n8
的长度,而i
小于或等于n8
第二个循环将第一个循环的当前index
(= i)作为起始点。它查看索引是否大于n7
并且通过从{(1}}大于one
的索引(j)中减去index
来迭代(j--)。
计算在第二个循环的迭代中进行:它将n7
乘以n6
。完成循环后,它会返回two
的乘法。
在你的情况下,第一个循环将运行两次:
n6
= 1且0和1小于或等于。n8
成为循环2的0
。starting index
= 0且大于n7(-2)。j
(1)乘以两次乘以两次。或n6
1 * 2 * 2
成为循环2的起始索引。1
4 * 2 * 2 * 2
= 32。
此函数在n6
需要大于n
的迭代次数上返回n7
的2次幂,否则n8
将不加修改地返回。< / p>
由于这几乎是JavaScript,我们可以使用示例代码演示:
n6
function f3(n6, n7, n8) {
let i, j;
for(i = 0; i <= n8; i++) {
for(j = i; j > n7; j--) {
n6 *= 2;
}
}
return n6;
}
document.querySelector("button").addEventListener("click", function(){
const n6 = document.querySelector("input.n6").value;
const n7 = document.querySelector("input.n7").value;
const n8 = document.querySelector("input.n8").value;
console.log(f3(n6, n7, n8));
});
label{
display: block;
margin: 2px;
}
label > input{
display: block;
width: 50px;
}