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小时内删除。