C++面向对象程序设计题目

在下面循环语句中内层循环体S语句的执行总次数为( D )。
for(int i=0; i<n; i++)
for(int j=i; j<n; j++) S;
A. n2 B. (n+1)/2 C. n(n-1)/2 D. n(n+1)/2

求解题步骤

外循环 即for(int i=0;i<n;i++) 循环数为n
而内循环即 for(int j=i;j<n;j++)随着外循环的循环i的递增 而循环次数递减
显然循环次数依次为n,n-1,n-2,……,1.

而S的执行次数显然等于内循环 总循环次数之和即
S(n) = n+(n-1)+(n-2)+……+1;
说到这就有点像等差数列了
S= 数列的个数(即外循环次数n)*(首项即n+末项即1)/2
S = n(n+1)/2
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-12-24

#include<iostream.h>

int sum(int n)
{
if (n==1)
return 1;
else
return n+sum(n-1);
}

void main()
{
cout<<sum(100)<<endl;
}


1.
i,s=15,56
2.
2 3
4 5
3.
Constructing.
Copy Constructing.
Copy Constructing.
15
Destructing
Destructing
Destructing
第2个回答  2010-12-23
i = 0;时,s 执行 n 次,
i = 1;时,s 执行 n-1 次,



i = n;时,s 执行 0 次
所以共执行:1+2+3+............+n次,即 n(n+1)/2次
相似回答