Rumah >hujung hadapan web >tutorial js >Masalah Keras Rekursif Menggunakan Javascript

Masalah Keras Rekursif Menggunakan Javascript

王林
王林asal
2024-08-17 06:53:081044semak imbas

Recursive Hard Problems Using Javascript

S. Bagaimana untuk mencari jalan ke Laman Utama / Sumber ke destinasi menggunakan rekursi

"XXXXXXEX",
"X X",

"XSXXXXXX"

"XXXXXXEX",
"X X X",
"X X X",
"X XXX X",
"X X",
"XSXXXXXX"

Daripada 2 corak ini ketahui laluan dari Sumber ke destinasi

// const maze = [
//     "XXXXXEX",
//     "X     X",
//     "XSXXXXX"
//     ];
const maze = [
    "XXXXXEX",
    "X   X X",
    "X   X X",
    "X XXX X",
    "X     X",
    "XSXXXXXX"
    ];
const dir = [
    [-1, 0],
    [1, 0],
    [0, -1],
    [0, 1]
    ];

visited = {};

path = [];

const findPath = (row, col) => {
    //1. out of bound condition
    if (row < 0 || row >= maze.length || col < 0 || col >= maze[0].length) {
        return false;
    }

    //2. Already visited 
    if (visited[`${row}_${col}`]) {
        return false;
    }


    // found road block 
    if (maze[row][col] === 'X') {
        return false;
    }

    // found the End

    if (maze[row][col] === 'E') {
         path.push(`${row}_${col}`);
        return true;
    }

    path.push(`${row}_${col}`);
    visited[`${row}_${col}`] = true;

    for (let item of dir) {
        const [x, y] = item;
        if (findPath(row+x, col+y)) {
            return true;
        }
    }
    path.pop();
    return false;
};

findPath(5,1);
// findPath(2,1);
console.log(path)

/*
node /tmp/n2GEk3kzOo.js
[
  '5_1', '4_1', '4_2',
  '4_3', '4_4', '4_5',
  '3_5', '2_5', '1_5',
  '0_5'
]
*/

Atas ialah kandungan terperinci Masalah Keras Rekursif Menggunakan Javascript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn