I dont understand the following code. Also how recursion works in js.
function a(num){
if(num===1){return 1;}
return num*a(num1);
}
a(4);
for example from the code above, the way I see it was this :
 function checks whether num===1, if it is return 1
 if it is not,
return num=num*(num1);
recursion should be repetitive right? I have seen some memes/jokes about recursion is like keep repeating a part of the sentences forever and ever…
in my mind after 4*3, the result will be returned and done.
in another word I do not understand the difference between these two set of code
 normal code :
function b(num) {
return num * (num  1);
}
b(4);
 recursion
function a(num) {
if (num === 1) { return 1; }
return num * a(num  1);
}
a(4);
could someone explain this to me?
I understand that 4!=4x3x2x1, that part is easy.
oh wait… I think I kind of understand it now…
recursion happens when you write a function and that function calls itself
So a way I can understand this is :
return num*a(num1);
is making a function call, and this time the parameter is num1
so what we get is this kind of operation:
4*a(3)

4*3*a(2)
// the 4 times part stays the same

4*3*2*a(1)
// same, the 4 times 3 part stays the same

4*3*2*1
. // because we already set a(1)===1
Is this correct???
Yeah here’s how i see it,
Iteration 
num 
a() returns 
a(num1) 
Result 
notes 
1 
4 
4*a(num 1) 
6 
24 
Third fully evaluated factorial 
2 
3 
3*a(num 1) 
2 
6 
Second fully evaluated factorial 
3 
2 
2*a(num 1) 
1 
2 
First fully evaluated factorial 
I think the main point is that the recursive function does not fully evaluate and return a number until num=2
, i.e. till num1 ===1
, in all other cases of the num
parameter, it will return a function.
Once it reaches that number, then notice how the result is transferred up the chain to evaluate a(num1) . i.e. the result 2 is carried up to the 2nd iteration and the result 6 to the 1st iteration and so forth, closely resembling the mathematical definition of a factorial.