第一种方法:数学归纳法
//备注:最后图片上有点小错误,1²+2²+3²+……+(k+1)²=(k+1)(k+2)(2k+3)]/6
第二种方法:直接推导法
12+22+32+…+n2=n(n+1)(2n+1)/6,在高中数学中是用数学归纳法证明的一个命题,没有给出其直接的推导过程。其实,该求和公式的直接推导并不复杂,也没有超出初中数学内容。
设:S=12+22+32+…+n2
另设:S1=12+22+32+…+n2+(n+1)2+(n+2)2+(n+3)2+…+(n+n)2,此步设题是解题的关键,一般人不会这么去设想。有了此步设题,第一:S1=12+22+32+…+n2+(n+1)2+(n+2)2+(n+3)2+…+(n+n)2中的12+22+32+…+n2=S,(n+1)2+(n+2)2+(n+3)2+…+(n+n)2可以展开为(n2+2n+12)+( n2+2×2n+22) +( n2+2×3n+32)+…+( n2+2×nn+n2)=n3+2n(1+2+3+…+n)+ 12+22+32+…+n2,即
S1=2S+n3+2n(1+2+3+…+n)………………………………………………..(1)
第二:S1=12+22+32+…+n2+(n+1)2+(n+2)2+(n+3)2+…+(n+n)2可以写为:
S1=12+32+52…+ (2n-1)2+22+42+62…+(2n)2,其中:
22+42+62…+(2n)2=22(12+22+32+…+n2)=4S……………………………………..(2)
12+32+52…+(2n-1)2=(2×1-1)2+(2×2-1)2+(2×3-1) 2+…+ (2n-1) 2
= (22×12-2×2×1+1) +(22×22-2×2×2+1)+(22×32-2×2×3+1)+…+ (22×n2-2×2×n+1)
=22×12+22×22+22×32+…+22×n2-2×2×1-2×2×2-2×2×3-…-2×2×n+n
=22×(12+22+32+…+n2)-2×2 (1+2+3+…+n)+n
=4S-4(1+2+3+…+n)+n……………………………………………………………..(3)
由(2)+ (3)得:S1=8S-4(1+2+3+…+n)+n…………………………………………..(4)
由(1)与(4)得:2S+ n3+2n(1+2+3+…+n) =8S-4(1+2+3+…+n)+n
即:6S= n3+2n(1+2+3+…+n)+ 4(1+2+3+…+n)-n
= n[n2+n(1+n)+2(1+n)-1]
= n(2n2+3n+1)
= n(n+1)(2n+1)
S= n(n+1)(2n+1)/ 6
亦即:S=12+22+32+…+n2= n(n+1)(2n+1)/6……………………………………(5)
以上可得各自然数平方和公式为n(n+1)(2n+1)/6,其中n为最后一位自然数。
由(5)代入(2)得自然数偶数平方和公式为2n(n+1)(2n+1)/3,其中2n为最后一位自然数。
由(5)代入(3)得自然数奇数平方和公式为n(2n-1)(2n+1)/3,其中2n-1为最后一位自然数。
问题:求一下程序的时间复杂度
for(i=0;i<n;i++)
{
for(j=0;j<i;j++)
{
}
}
解:当i=m, j=k的时候,内层循环的次数为k当i=m时, j 可以取 0,1,...,m-1 , 所以这里最内循环共进行了0+1+...+m-1=(m-1)m/2次所以,i从0取到n, 则循环共进行了: 0+(1-1)*1/2+...+(n-1)n/2=n(n+1)(n-1)/6所以时间复杂度为O(n^3).