题目描述
for(int i = 1; i < n; i++) {
for(int j = 1; j < i; j++) {
for(int k = 1; k < j; k++) {
cout << "Hello World ";
}
}
}
上述循环一共执行了多少次”Hello World “语句?
不妨假设
a[n,3]
a
[
n
,
3
]
为循环层数为3,输入值为
n
n
时的语句执行次数,则有
=a[n−2,1]+a[n−3,1]+⋯+a[2,1]
=
a
[
n
−
2
,
1
]
+
a
[
n
−
3
,
1
]
+
⋯
+
a
[
2
,
1
]
+a[n−3,1]+⋯+a[2,1]
+
a
[
n
−
3
,
1
]
+
⋯
+
a
[
2
,
1
]
+⋯⋯⋯
+
⋯
⋯
⋯
+a[2,1]
+
a
[
2
,
1
]
=a[n−2,1]+2∗a[n−3,1]+⋯+(n−4)∗a[3,1]+(n−3)∗a[2,1]
=
a
[
n
−
2
,
1
]
+
2
∗
a
[
n
−
3
,
1
]
+
⋯
+
(
n
−
4
)
∗
a
[
3
,
1
]
+
(
n
−
3
)
∗
a
[
2
,
1
]
又因为
所以有 a[n,3]=(n−3)∗1+(n−4)∗2+⋯+2∗(n−4)+1∗(n−3)=∑n−3k=1(n−k−2)∗k a [ n , 3 ] = ( n − 3 ) ∗ 1 + ( n − 4 ) ∗ 2 + ⋯ + 2 ∗ ( n − 4 ) + 1 ∗ ( n − 3 ) = ∑ k = 1 n − 3 ( n − k − 2 ) ∗ k
又因为
即