任务1:利用递归实现阶乘计算
任务要求:
任务分析:
任务实现:
<script>
function factorial(n) { // 定义回调函数
if (n == 1) {
return 1; // 递归出口
}
return n * factorial(n - 1);
}
var n = prompt('求n的阶乘\n n是大于等于1的正整数,如2表示求2!。');
n = parseInt(n);
if (isNaN(n)) {
console.log('输入的n值不合法');
} else {
console.log(n + '的阶乘为:' + factorial(n));
}
</script>
任务2:求斐波那契数列第N项的值
任务要求:
斐波那契数列又称黄金分割数列,指的是“1, 1, 2, 3, 5, 8, 13, 21……”这样一个数列,从中可以找出的规律是“这个数列从第3项开始,每一项都等于前两项之和”。
本案例将利用递归实现计算斐波那契数列第N项的值。
任务分析:
如果N小于0则提示输入的数字不能小于0。
如果N等于0返回第0项的值为0。
如果N等于1返回第1项的值为1。
如果N大于1则进行递归调用,实现前两项值相加。
任务实现:
<script>
function recursion(num) {
if (num < 0) {
return '输入的数字不能小于0';
} else if (num == 0) {
return 0;
} else if (num == 1) {
return 1;
} else if (num > 1) {
return recursion(num - 1) + recursion(num - 2);
}
}
console.log(recursion(10));
</script>
【训练1】:输出某年某月的天数
要求:应用函数的嵌套实现判断指定年份和月份对应天数的功能 ,将年份和月份作为函数的参数进行传递,输出2024年6月有多少天。
参考答案: