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:
firstfactorial(num-1)called. (firstfactorial function called parameternum-1.- the return value of
firstfactorial(num-1)(num-1)!multiplied value ofnumnum!. - this value (
num!) returned functionfirstfactorial()when passed parameternumorfirstfactorial(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
Post a Comment