JS递推方式
js的递推方法就是:找到数字的规律,通过公式计算找到下一项,一直到我们要的结果为止。
例如:兔子产子,通过前两项得到下一项。
<scripttype="text/javascript">
/*
* 一般而言,在兔子出生后的两个月,就有繁殖能力一对兔子每个月生一对兔子
* 如果所有的兔子都不死,那么一年之后总共有多少对
* */
/*
* 月份 0 1 2 3 4 5 6 7 8 9 10
* 幼崽 1 1 1 2 3 5 8
* 成年 0 0 1 1 2 3 5
* 总共 1 1 2 3 5 8 13 21 34 55 89
* */
/*
* 1.接受用户输入了几个月
* 2.计算兔子的对数
* (1)如果经过的月份小于2.那么兔子的对数为1
* (2)否则初始的兔子的对数加上第一个月的对数为第二个月(an = an-1 + an-2)
* 3.打印兔子对数
* */
var month = prompt("请输入月份");
var sum = 1;
var an =1;
var an_1=1;
if(month < 2){
sum =1;
}else{
sum =2;
for(var i =1; i<month; i++){
sum = an +an_1;
an_1 = an;
an = sum;
}
}
alert(sum);
</script>
数组:
<scripttype="text/javascript">
/*
* 1.接受用户输入了几个月
* 2.计算兔子的对数
* (1)如果经过的月份小于2.那么兔子的对数为1
* (2)否则初始的兔子的对数加上第一个月的对数为第二个月(an+1 = an+an-1)
* 3.打印兔子对数
* */
var month = prompt("请输入月份");
var rabbit = [1,1];
for(var m=2 ;m<=month; m++){
rabbit[m] =rabbit[m-1]+rabbit[m-2];
}
alert(rabbit[month]);
</script>
递推分为两种:顺推和逆推。
案例:猴子吃桃,采用逆推方法和for语句两种方法。
有一只猴子,第一天摘了若干个桃子 ,当即吃了一半,但还觉得不过瘾,就又多吃了一个。第2天早上又将剩下的桃子吃掉一半,还是觉得不过瘾,就又多吃了两个。以后每天早上都吃了前一天剩下的一半加天数个(例如,第5天吃了前一天剩下的一半加5个)。到第n天早上再想吃的时候,就只剩下一个桃子了。 编程求解桃子初始数。
for语句
<scripttype="text/javascript">
var days = Number(prompt("请输入天数"));
var c=1; //桃子的数值
for(var day=days-1;day>=1;day--){
c=(c+day)*2;
}
alert(c);
</script>
逆推函数
<scripttype="text/javascript">
var days = Number(prompt("请输入天数"));
alert(fun(days));
function fun(day) {
if(day == 1){
return 1;
}
return (fun(day-1)+--days)*2;
}
</script>