算法篇(2) 递归及其相关问题解决
2022/3/30 1:56:25
本文主要是介绍算法篇(2) 递归及其相关问题解决,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
反转字符串
function reverseStr(str) { if (str.length === 1) { console.log(str); return; } console.log(str.slice(-1)); str = str.slice(0, str.length - 1); reverseStr(str); }
二分查找
function binSearh(arr, bot, top, item) { if (bot > top) { return "要查找的值不存在数组中"; } mid = bot + ((top - bot) >> 1); if (arr[mid] == item) { return mid; } else if (arr[mid] > item) { return binSearh(arr, bot, mid, item); } else { return binSearh(arr, mid + 1, top, item); } }
汉诺塔
//汉诺塔 function move(n, x, y, z) { if (1 == n) { console.log(x, z); } else { move(n - 1, x, z, y); console.log(x, z); move(n - 1, y, x, z); } } move(3, "X", "Y", "Z");
八皇后问题
let count = 0; function notDanger(i, j) { let k = 1; for (k = 1; i >= k && j >= k; k++) { if (arr[i - k][j - k]) { return 0; } } for (k = 1; i >= k; k++) { if (arr[i - k][j]) { return 0; } } for (k = 1; i >= k && j + k < 8; k++) { if (arr[i - k][j + k]) { return 0; } } return 1; } /** * * @param {*} row 行数 */ //八皇后问题 function queen(row) { let j = 0; if (8 === row) { console.log(`第${count}种`); for (let i = 0; i < 8; i++) { let str = ""; for (j = 0; j < 8; j++) { str += arr[i][j]; } console.log(str); } count++; } else { //判断是否有危险 //如果没有危险,继续往下 for (j = 0; j < 8; j++) { arr[row][j] = 1; if (notDanger(row, j)) { //判断是否危险 queen(row + 1); } arr[row][j] = 0; } } } let arr = new Array(8).fill().map(() => { return new Array(8).fill(0); }) queen(0);
这篇关于算法篇(2) 递归及其相关问题解决的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-01成为百万架构师的第一课:设计模式:Spring中的设计模式
- 2025-01-01一个基于注解驱动的可视化的DDD架构-超越COLA的设计
- 2025-01-01PlantUML 时序图 基本例子
- 2025-01-01plantuml 信号时序图
- 2025-01-01聊聊springboot项目如何优雅进行数据校验
- 2024-12-31自由职业者效率提升指南:3个时间管理技巧搞定多个项目
- 2024-12-31适用于咨询行业的项目管理工具:提升跨团队协作和工作效率的最佳选择
- 2024-12-31高效协作的未来:2024年实时文档工具深度解析
- 2024-12-31商务谈判者的利器!哪 6 款办公软件能提升春节合作成功率?
- 2024-12-31小团队如何选择最实用的项目管理工具?高效协作与任务追踪指南