第一种方法:数学归纳法

//备注:最后图片上有点小错误,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).
本文介绍了一种不依赖于数学归纳法的自然数平方和公式的推导方法,并给出了具体的步骤说明。同时,还提供了求解特定程序时间复杂度的解析。
4万+

被折叠的 条评论
为什么被折叠?



