累加
第一个:小球从100米高空落下,每次都会跳到原来的一半高度,问20次落地时小球走过的距离。
var sum=0;
var arr=[i];
arr[0]=100;
for(var i=0;i<20;i++){
var sum=sum+arr[i]*2;
arr[i+1]=arr[i]/2;
}
var res=sum-arr[0];
document.write(res);
计算斐波那契数列(1/2, 2/3, 3/5, 5/6,…….)的前20 项之和。
var arr=[];
arr[0]=1;arr[1]=2;
var sum=0;
for(var i=0;i<=20;i++ ){
sum=sum+(arr[i]/arr[i+1]);
arr[i+2]=arr[i+1]+arr[i];
}
document.write(sum);
累加/乘算法的一般形式:
V += e
V *=e
算法要点:
(1)初始化
v =0; 累加
v =1; 累乘
E的每一项的初始化,可能会比较复杂,小球的初始化就是一个高度,数列分为分子和分母。圆周率的还有符号
(2)循环控制的条件
从题目中去获取,可能是固定的循环次数,也可能是项数的要求,具体情况具体分析
(3)从当前项如何变为下一项
数列的,当前的分母变为下一项的分子,当前的分子加分母变为下一项的分母。
迭代法
求两个数的最大公约数
辗转相除法
用较大的数对较小的数取余数,如果余数为0,那么最大公约数就是这个较小的数,如果不为0,那么让除数变为较大的数,余数变为较小的数,继续这样下去直到余数为0
var num1=Number(prompt("请输入一个数"));
var num2=Number(prompt("请输入一个数"));
var res=maxGCD(num1,num2);
alert(res);
//函数的功能:得到两个数的最大公约数
//名称:maxGCD
//参数:num1num2
//返回值:最大公约数
function maxGCD