首页 > 语言 > JavaScript > 正文

Javascript迭代、递推、穷举、递归常用算法实例讲解

2024-05-06 15:42:41
字体:
来源:转载
供稿:网友

累加和累积

累加:将一系列的数据加到一个变量里面。最后的得到累加的结果

比如:将1到100的数求累加和

小球从高处落下,每次返回到原来一半,求第十次小球落地时小球走过的路程

<script>  var h=100;  var s=0;  for(var i=0;i<10;i++){    h=h/2;    s+=h;  }  s=s*2+100;</script>

累积:将一系列的数据乘积到一个变量里面,得到累积的结果。

常见的就是n的阶乘

var n=100;var result= 1;for(var i=1;i<=n;i++){  result*=i;}

一般形式:

累加:V +=e;

累积:v*=e;

V代表累加和累积,e代表累加/累积项

算法要点:

(1)   初始化

初始化v和e

累加:v = 0;

累积:v = 1;

e的初始化,如果累加/积项比较复杂,可能会分解为几个子项分别初始化,比如计算圆周率的问题,累计项分解为符号、分子和分母三部分。

(2)   循环的控制条件

一种是固定的次数,比如计算弹跳距离的问题,计算数列前20项之和的问题,

次数不固定,而是要满足某个条件:计算圆周率问题要求最后一项的绝对值,要小于10-6。

(3)   确定累加/积项的变化

比如数列的前20项之和,是将当前的分子分母之和作为下一次的分母,当前的分母作为分子。

再比如求圆周率问题,是将符号取反、分母加2,然后的出下一项。

迭代

迭代法也就是辗转法

规律:就是可以不断地用旧的值得到新的值,直到我们想要的得到的结果。

遇到了迭代的问题怎么解决

1.  找到迭代的变量(旧的值)

2.  确定迭代的关系

3.  知道想要的结果是什么(结束循环的条件)

(1)  就是知道最终结果 (2)  循环的次数
<script>  /*  * 1.接受用户输入的俩个数  * 2.一个函数的到最大公约数  * 3.打印这个最大公约数*/  varnum1 = Number(prompt("请输入一个数"));  var num2 = Number(prompt("请输入一个数"));  var result = GCD(num1,num2);  alert(result);  /*  * 函数的功能:得到最大公约数  * 函数名:GCD  * 函数的参数:俩个整数  * 返回值:最大公约数*/  /*  * 如果num1<num2则交换,确保num1是交大的  * 计算余数  * 当num1(除数),对num2(被除数)的余数不为0,重复一下步骤  * num2=>num1,  * 余数=>num2  * 重新计算余数  * 最终的到最大公约数,也就是num2的值*/  functionGCD(num1,num2){    /*return0;*/    if(num1<num2){     var t = num1;      num1=num2;      num2 = t;    }    var remainder = num1%num2;    while(remainder!= 0){      num1=num2;      num2= remainder;      remainder=num1%num2;    }    returnnum2;  }</script>            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选