//最简单PI计算javascript程序,2006.12 许剑伟 莆田十中
function GJ2_pi(){//,本程序所得最后5位可能有错
var N=GJ2_N.value-0+1, a=new Array(); //N为计算的位数
var i=Math.round(3.4*N),b=2*i+1, j,f;
for(j=0;j<N;j++) a[j]=0; //PI结果数组初始化
for(;i>0; i--,b-=2,a[0]+=2) //每计算3.4次得到1位十进制精度
for(j=0,f=0;j<N;j++){ //多精度a与单精度b相除算法(小学除法),分子i,分母2*i+1
f = a[j]*i+f*10;
a[j] = Math.floor(f/b);
f %= b;
}
for(i=N-1;i>0;i--) a[i-1] += Math.floor(a[i]/10), a[i] %= 10; //进位处理
a[0]='<br>'; for(i=1;i<N;i++) {if(i%10==0) a[i]+=' '; if(i%100==0) a[i]+='<br>';} //换行处理
GJ2_out.innerHTML=
'本算法为低速算法,计算位数不宜过大,否则计算时间太长。<br>'
+'以下计算圆周率,计算公式:PI/2=1+1/3+1*2/(1*3*5)+1*2*3/(1*3*5*7)+...<br>'
+'通过提取公因子得连分式形式:PI=2+1/3(2+2/5(2+3/7(2+...,这样只需迭代计算a=2+a*n/(2n+1),n=N,…3,,2,1即可得到a=PI<br>'
+'最后5位可能有错:<font color=red>PI=3.' + a.join('') + '</font>';
}
for(;i>0; i--,b-=2,a[0]+=2) //每计算3.4次得到1位十进制精度
像这样的语句,没有循环体,也没有分号与下面的语句分隔,我们应该怎么来理解它所实现的功能呢,这个循环语句与下一个循环语言是不是嵌套 关系 呢?,我用汉语代码改写成嵌套关系,发现不正常。