简体   繁体   中英

Recursion - javascript

I am trying to solve an extra credit problem using recursion. Basically there is a "tree" that has matching "leaves" and I need to use recursion to check those matching leaves and return true if they match and return false if they do not.

I have no idea how to do this and no materials I can find are helping me understand recursion any better. This is for an online program to learn how to program.

Any help would be appreciated!

Psuedo:

    // initialize some value
      // initialize some flag.. boolean
      // initialize some helper function and pass obj...leaf checker recursive function
        // check all the keys ...for loop/forEach
          // if a key is an object && value is undefined
            // assign value
            // return
          // if a value is an object ==> recurse
          // if a value is found and it doesn't match our initial value
          // trip our flag to false
          // return
      // return true or false

 const checkMatchingLeaves = (obj) => {

};

My attempt:

const checkMatchingLeaves = (obj) => {
  // return true if every property on `obj` is the same
  // otherwise return false
  let  checker = Object.values(obj);
  if (Object.values(obj).length === 1) return true; 
    if (checker.map(checker[i] === checker[i + 1])) {
      i > checker.length; i++;
    }
};

This isn't exactly what (I think) you're asking for, but you should be able to use it as a template to figure out what to do:

// searchTree takes a value to try to match and an array/primitive 
// value.
function searchTree(val, node) {
  // Check if it's a value or an array. If it's a value we can
  // do the test and return, otherwise we recursively call
  // searchTree on all the children.
  // Array.some returns true if any of the function calls return
  // true. This is a shorthand for your boolean flag: it lets us
  // return early as soon as we find a match.
  return Array.isArray(node) ? 
    node.some(child => searchTree(val, child)) : // recursive call
    val === node;
}

searchTree(3, [1, 2, [8], [[[3]]]]);      // true
searchTree('abc', 'a');                   // false
searchTree('abc', ['ab', 'bc', ['abc']]); // true 

This is a DFS search implementation.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM