js 递归和回溯代码例子
递归和回溯是编程中常用的两种技术,它们都可以用来解决某些问题。以下是JavaScript中递归和回溯的简单示例。
递归
递归是一种编程技术,函数直接或间接地调用自身来解决问题。以下是一个简单的递归函数,用于计算阶乘:
```javascript
function factorial(n) {
if (n === 0) {
return 1;
} else {
return n factorial(n - 1);
}
}
```
这个函数会一直调用自身,直到满足条件(n === 0)为止。
回溯
回溯是一种用于解决约束满足问题的算法。当一个候选解被发现不满足约束时,算法会“回溯”到产生这个候选解的最后一步,并尝试另一种可能的候选解。以下是一个简单的回溯算法,用于解决N皇后问题:
```javascript
function solveNQueens(n) {
var board = new Array(n).fill('.').map(() => new Array(n).fill('.'));
var columns = new Set();
var diagonals = new Set();
var result = [];
backtrack(board, 0, columns, diagonals, result);
return result;
}
function backtrack(board, row, columns, diagonals, result) {
if (row === ) {
((row => ('')).join(' '));
return;
}
for (let col = 0; col < ; col++) {
if ((col) (`${row}-${col}`)) {
continue;
}
board[row][col] = 'Q';
(col);
(`${row}-${col}`);
backtrack(board, row + 1, columns, diagonals, result);
js购物车结算代码 (col);
(`${row}-${col}`);
}
}
```
这个函数会尝试在每一行放置一个皇后,并检查是否所有约束都被满足。如果所有约束都被满足,它就会把当前状态添加到结果中。如果某个位置不能放置皇后,它就会“回溯”到前一行并尝试下一个位置。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论