例子问题
例子问题1:算法分析
countStatements() {
Int = 10, b = 15, c = 7;
/ /开始
For (int I = 0;I < a;I += 2) {
b——;
System.out.print(“*”);
}
For (int I = b;我> = 0;我(){
For (int j = 0;J < c;j + +) {
System.out.print(“*”);
}
}
/ /结束
}
在上面的代码中,多少次将System.out.print
在评论之间调用"/ /开始
“而且”/ /结束
"?
从计算第一个循环循环的次数开始。注意,循环控制变量(即,我
)每次循环增加2。这意味着你将循环i = 0,2,4,6,8。它不会循环到10,因为,我
就等于一个
.这将终止循环。因此,到目前为止,您已经有了五个循环。注意,这也意味着b
减了5倍。因此,在循环的最后,b
现在等于10。
对于第二个循环,你必须小心,因为它有两个循环。外部循环将运行I = 10
来I = 0
.这总共是11个循环。(注意这一点很重要,因为它不仅适用于10到1,而且适用于最后的数字0。该循环中的循环将从j
= 0到j
= 6(即小于c
,即7)。这总共是7个循环。因此,这些嵌套循环总共将运行77次。总共调用System.out.print
将,或82。
例子问题1:统计语句执行次数
countStatements() {
Int [] array = new Int [54];
For (int I = 0;I < array.length;我+ +){
数组[i] = 3 * i + 1;
System.out.println(“耶!”);
}
For (int I = 0;I < array[5];我+ +){
数组[我]——;
System.out.println(“耶!”);
}
For (int I =数组[3];我> 0;我(){
System.out.println(“耶!”);
}
}
会打给多少个电话System.out.println
在上面的代码中?
让我们计算每个循环,在需要时注意变量。第一个循环总共将运行54次。因此,它将总共执行54次。还要注意它是如何初始化数组的。这将在第二个循环中使用。每个元素都等于3i + 1
.因此,我们将有:
A [0] = 1;A [1] = 4;A [2] = 7;A [3] = 10;A [4] = 13;A [5] = 16;等。
现在,循环2将使用一个[5]
控制它的执行。注意它是从I = 0
来I = 15
.的值在每次执行时都会减少(我)
由一个。因此,要小心。它最终会跑一个[5]
,因此是15。这将用于循环控件。这意味着它实际上只从I = 0
来I = 14
.因此,循环总共运行15次次了。
最后一个循环从I = 9
来I = 1
.(注:这是因为在第二个循环中减量。)一共执行了9次。
因此,执行的总数为:
例子问题1:算法分析
下面的代码片段中执行了多少条语句?
For (int I = 0;I < arrr .length;我+ +){
If (i == 2) {
我+ +;
}
}
2
6
5
3.
5
代码片段中执行的语句顺序如下:
- Int I = 0
- I < arrr .length
- i++(等价于I = I + 1)
- I == 2
- 我+ +
这些语句都是在每次for循环运行时按顺序执行的。如果if语句为假,有时可能只执行4次。