算法篇(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) 递归及其相关问题解决的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现
- 2024-05-30我们小公司,哪像华为一样,用得上IPD(集成产品开发)?
- 2024-05-30java excel上传--poi
- 2024-05-30安装笔记本应用商店的pycharm,再安排pandas等模块,说是没有打包工具?
- 2024-05-29java11新特性
- 2024-05-29哪些无用敏捷指标正在破坏敏捷转型?
- 2024-05-29鸿蒙原生应用再新丁!新华社 入局鸿蒙
- 2024-05-29设计模式 之 迭代器模式(Iterator)