迭代
迭代法也就是辗转法
规律:就是可以不断地用旧的值得到新的值,直到我们想要的得到的结果。
遇到了迭代的问题怎么解决
找到迭代的变量(旧的值)
确定迭代的关系
知道想要的结果是什么(结束循环的条件)
(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>
递归
所谓递归,就是在函数内部又去调用自己。
例如,求阶乘问题,在fact函数内部又去调用fact函数了
<script>
/*计算n的阶乘*/
functionfact(n){
if(1== n){
return1
}
returnn*fact(n-1);
}
alert(fact(5));
</script>
递归算法如果按照常规思路去理解是非常复杂的,函数调用一层一层嵌套调用,然后又一层一层返回,不妨换个思路去理解递归。
递归实际上就是将规模为n的问题降价为n-1的问题进行求解。也就是去找n和n-1之间的关系。