javascript - Why doesn't this give me the factorial? -


function firstfactorial(num) {        for(var = num - 1; > 0; i--) {            return num * i;        }             };    console.log(firstfactorial(8)) 

i want know writing code doesn't print factorial? instead 56, 8 * 7. thought if use loop keep going?

using:

for(var = num - 1; > 0; i--) {     return num * i;  } 

it return num*(num-1) value. since return value in first iteration.

instead use:

using recursion:

function firstfactorial(num) {     if(num==1)         return num;     else         return num*(firstfactorial(num-1)) } 

or:

fact=num; for(var = num - 1; > 0; i--) {     fact*=i;  } return fact; 

edit: on demand of op explain how return work in recursion method.

regarding recursion:

return num*firstfactorial(num-1) 

actually first multiplies num return value of firstfactorial(num-1) (n-1)!. hence happen is:

  1. firstfactorial(num-1) called. (firstfactorial function called parameter num-1.
  2. the return value of firstfactorial(num-1) (num-1)! multiplied value of num num!.
  3. this value (num!) returned function firstfactorial() when passed parameter num or firstfactorial(num)

now on calling firstfactorial(num-1) inside firstfactorial(num), firstfactorial function again executed checking first if condition. if fails, return value of (n-1)*firstfactorial(num-1 - 1). recurse until first if condition satisfied , value returned without calling firstfactorial again.

you can think function as:

function firstfactorial(num) {     if(num==1)         return num;     else {         = firstfactorial(num-1);         = * num;         return a;     } } 

Comments

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -