JavaScript 递归 [9 个练习和解决方案]
1.编写一个 JavaScript 程序来计算一个数的阶乘。在数学中,非负整数 n 的阶乘,用 n! 表示,是所有小于或等于 n 的正整数的乘积。
例如,5!= 5 x 4 x 3 x 2 x 1 = 120
function factorial(x){ if(x===0){ return 1; } // console.log(x) return x*factorial(x-1); } console.log(factorial(5))
2.编写一个 JavaScript 程序来找到两个正数的最大公约数 (gcd)。
var gcd = function(a,b){ if(!b){ return a; } return gcd(b,a%b); } console.log(gcd(2154,458))
3.编写一个 JavaScript 程序来获取 (x, y) 范围内的整数。
range(2, 9)预期输出: [3, 4, 5, 6, 7, 8]
var range = function(start_num,end_num){ if(end_num - start_num ===2){ return [start_num +1] }else{ var list = range(start_num,end_num-1); list.push(end_num-1); return list; } } console.log(range(2,9))
4.编写一个 JavaScript 程序来计算整数数组的总和。
示例:var array = [1, 2, 3, 4, 5, 6]预期输出: 21
var array_sum = function(my_array){ if(my_array.length === 1){ return my_array[0]; } else{ return my_array.pop()+array_sum(my_array); } } console.log(array_sum([1,2,3,4,5,6]))
5.编写一个 JavaScript 程序来计算一个数的指数。
注意:数字的指数表示使用基数作为因子的次数。 8 2 = 8 x 8 = 64。这里 8 是底数,2 是指数
var exponent = function(a,n){ if(n===0){ return 1; } else{ return a * exponent(a,n-1); } } console.log(exponent(4,2));
6.编写一个 JavaScript 程序来获取前 n 个斐波那契数。
注意:斐波那契数列是一系列数字:0、1、1、2、3、5、8、13、21、34,... . . 随后的每个数字都是前两个数字的总和。
var fibonacci_series = function(n){ if(n===1){ return [0,1]; } else{ var s = fibonacci_series(n-1); s.push(s[s.length-1]+s[s.length-2]); return s; } } console.log(fibonacci_series(8))
7.编写一个 JavaScript 程序来检查一个数字是否是偶数。
function is_even_recursion(number){ if(number < 0){ number = Math.abs(number); } if(number === 0){ return true; } if(number === 1){ return false; } else{ number = number -2; return is_even_recursion(number) } } console.log(is_even_recursion(234)) console.log(is_even_recursion(-45)) console.log(is_even_recursion(65))
8.编写一个用于二分查找的 JavaScript 程序。
示例数组:[0,1,2,3,4,5,6] console.log(l.br_search(5)) 将返回 '5
Array.prototype.br_search = function(target){ var half = parseInt(this.length / 2); if(target === this[half]){ return half; } if(target > this[half]){ return half+this.slice(half,this.length).br_search(target); }else{ return this.slice(0,half).br_search(target); } } l=[0,1,2,3,4,5,6] console.log(l.br_search(5))
9.用 JavaScript 编写归并排序程序。
示例数组:[34,7,23,32,5,62]示例输出: [5,7,23,32,34,62]
Array.prototype.merge_Sort = function(){ if(this.length <=1){ return this; } var half = parseInt(this.length /2); var left = this.slice(0,half).merge_Sort(); var right = this.slice(half,this.length).merge_Sort(); var merge = function(left,right){ var arry = []; while(left.length > 0 && right.length >0){ arry.push((left[0] <= right[0]) ? left.shift() : right.shift()); } return arry.concat(left).concat(right); }; return merge(left,right); } var a=[34,7,23,32,5,62]; console.log(a.merge_Sort())
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现