|
质朴农民数学家的算法: N +(N-4)/2 × N/2 = N^2/4 (N为偶数时有效)
我的累加法:
y=f(n)= 0+1+1+....+trunc(n/2) (n>0)
当n为奇数时,y=f(n)=0+1+1+....+trunc((n-1)/2)+trunc(n/2) = 2*(1+2+...+(n-1)/2) ..........(1)
由S=1+2+...+n=n(n+1)/2 , 可推出 (1)式等价于
2*((n-1)/2 * ((n-1)/2+1)/2) = (n-1)(n+1)/4=(n^2-1)/4
当n为偶数时,y=f(n)=0+1+1+....+trunc((n-1)/2)+trunc(n/2) = 2*(1+2+...+(n-2)/2)+n/2 ..........(2)
类似于1的推理, (2)式等价于
((n-2)/2*((n-2)/2+1))/2 + n/2*(n/2+1)/8 = 2n^2/8=n^2/4
嗯,相当匹配…………
SCOTT@lw.lw> select n, y1, sum(y1)over(order by n,y1) Y, decode(n/2,trunc(
n/2), (n*n)/4, (n*n-1)/4) ck1 from (select rownum n, trunc(rownum/2) y1 from
dual connect by rownum<21);
N Y1 Y CK1
---------- ---------- ---------- ----------
1 0 0 0
2 1 1 1
3 1 2 2
4 2 4 4
5 2 6 6
6 3 9 9
7 3 12 12
8 4 16 16
9 4 20 20
10 5 25 25
11 5 30 30
12 6 36 36
13 6 42 42
14 7 49 49
15 7 56 56
16 8 64 64
17 8 72 72
18 9 81 81
19 9 90 90
20 10 100 100
已选择20行。
已用时间: 00: 00: 00.04 |
|