Coder Social home page Coder Social logo

understanding-recursion's Introduction

Understanding Recursion

Trying to understand recursion

Learning resources

I'm currently using

Theory

Exercise

trying to do

Try to calculate a sum recursively without Array.reduce by implementing a function which accepts an array of numbers and an accumulating parameter. Take one element of the array and add it to the accumulator.

as suggested on this tweet reply prompted by my tweet about not having a deep understanding of recursion and array.reduce

How to run

Youre gonna need a server and point it towards index.html. If you're using visual studio code you can use five server(Live server) . It's what I'm using

Trial One

./index.js

// console.log("hi there");
const myarr = [9, 8, 3, 6, 7, 4];

const accumulator = function (acc, arr) {
  // console.log("bloody arr", arr);
  //do add to acc
  // console.log({ acc, arr });

  if (arr.length == 0) {
    return acc;
  } else {
    const num = arr.pop();

    acc = acc + Number(num);
    // console.log("logging steps=>", acc, "with", num);
    accumulator(acc, arr);
  }
};

const calling = accumulator(0, myarr);

console.log("calling", calling);

It failed to return the answer even through it breaks at the right point.

Added callback with the help of a friend

./index2.js

const myarr = [9, 8, 3, 6, 7, 4];

const accumulator = (arr, acc = 0, done) => {
  if (arr.length == 0) return done(acc);

  const num = arr.pop();
  acc = acc + Number(num);

  // log for visibility
  console.log({ num, acc, arr });

  accumulator(arr, acc + Number(num), done);
};

const handleAccumulatorFinish = (accumulated) => {
  console.log("accumulated", accumulated);
};

const accumulated = accumulator(myarr, 0, handleAccumulatorFinish);

shortened and simplified version

the chad version

index3.js

const myarr = [9, 8, 3, 6, 7, 4];

const adder = (arr) => {
  // return zero when array is finished
  //doesnt return without it
  if (arr.length === 0) return 0;
  //call adder with the remaining array after adding the last item through popping
  else return arr.pop() + adder(arr);
};
console.log(adder(myarr));

understanding-recursion's People

Contributors

oneted11 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.