教学PPT:
知类通达
函数的嵌套体现了模块化编程的协作精神,正如一个优秀的团队需要各司其职、紧密配合;而递归则蕴含着"不忘初心"的深刻哲理——没有基线条件的递归必将导致栈溢出,正如人生路上若迷失初心就会迷失方向。大家要理解良好的编程习惯与正确价值观的内在统一,培养既要有分解复杂问题的系统思维,又要坚守原则底线的职业操守,在掌握专业技能的同时筑牢思想根基。
任务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月有多少天。
参考答案: