What number will be alerted? | Sololearn: Learn to code for FREE!
New course! Every coder should learn Generative AI!
Try a free lesson
+ 2

What number will be alerted?

function func (n) { if (n<=1) { return 1; } else { return func (n-1); } } alert (func (4)); // I reasoned that n=4, which is NOT <=1, therefore, I should compute 4-1, and “3” should be alerted.

13th Aug 2022, 7:09 PM
Tahiti🌍Castillo
Tahiti🌍Castillo - avatar
9 Answers
+ 2
Recursive function is function which will have calls itself. func(4) is your original function call, on running this call, this function calling itself with argument 3 by fun(n-1) => fun(3),.. Until n<=1 is true, it is repeated. If you don't have this stop condition then it's infinite recursion.. 1). I modified your code by adding n+(..), to understand it better.. Which does like 4 + func(3) , now this func(3) is new, independent function call, like your original calk func(4).. Until this, is not finish, then func(4) which not finished... 2) : 4 + func(3) , now you need to find func(3) to get result of this statement. So func(4) gets the return value 4+func(3).. func(3) gets the return value 3+ func(2). func(2) gets return value 2+func(1). Func(1) gets return value 1. Go back wards to replace.. Note that, first original call is completed only after all other inner, recursives calls completed... edit:
14th Aug 2022, 7:03 PM
Jayakrishna 🇮🇳
+ 3
Jayakrishna🇮🇳 Ok, thanks again. Sounds like I’ll need to revisit the JS lesson on recursive functions.
14th Aug 2022, 4:35 AM
Tahiti🌍Castillo
Tahiti🌍Castillo - avatar
+ 3
Ok, I understand now. I was thinking about it completely incorrectly. I will look at those additional links. Thank you again. 🙏
14th Aug 2022, 7:41 PM
Tahiti🌍Castillo
Tahiti🌍Castillo - avatar
+ 2
Jayakrishna🇮🇳 Thank you, but why are you returning fun (func?) three times?
13th Aug 2022, 7:31 PM
Tahiti🌍Castillo
Tahiti🌍Castillo - avatar
+ 2
Jayakrishna🇮🇳 Thanks for your help. I’ve concluded that JavaScript needs to be reworked; it’s too confusing. Two more questions: 1. The above is a different code (problem) than the original, correct? 2. I don’t understand why you don’t stop at 4 + func(3); is it because the function is recursive? If so, what is it that lets you know it’s recursive? Thank you again.
14th Aug 2022, 3:58 PM
Tahiti🌍Castillo
Tahiti🌍Castillo - avatar
+ 2
See these other examples for understanding recursion. Hope it hepls... https://www.sololearn.com/Discuss/3026936/?ref=app https://www.sololearn.com/Discuss/2125616/?ref=app
14th Aug 2022, 7:06 PM
Jayakrishna 🇮🇳
+ 1
1 fun(4) => fun(3) =>fun(2) => fun(1) :: 1
13th Aug 2022, 7:21 PM
Jayakrishna 🇮🇳
+ 1
It is a recursive function. Initially you calling fun(4) , which itself calls fun(3) due to : return fun(n-1) , which calls fun(2) , and which calls fun(1) which just returns 1 to fun(2) call, backs to fun(3) , => fun(4) which is your statement in alert().
13th Aug 2022, 7:43 PM
Jayakrishna 🇮🇳
+ 1
I may Confused you? Do better understand this can be modified to find the sum of n consecutive numbers like : function func (n) { if (n<=1) return 1; else return n + func (n-1); } alert (func (4)); 4+fun(3) 4+3+fun(2) 4+3+2+fun(1) 4+3+2+1 Result is 4+3+2+1 = 10 is returned.. Hope it helps.. You're welcome..
14th Aug 2022, 10:55 AM
Jayakrishna 🇮🇳