This que is so looking so interesting... For now I didn't get the concept... Will definitely return to this que after getting some more concept about recursion 🙂
After get(0) -->if(0True-->return--> control goes to *get(1)*---->> then get(n-3)=get(-2) and then if(-2True-->return to get(-2) And then evaluate print(n) ------->>>>here n=1 hence will be printed.. Then control shifts to *get(2)*---->>get(2-3)=get(-1) then control will shift to if(-1>True-->>return-->get(-1) Then printf will get evaluated and hence will print n=2 Then control shifts to *get(3)*--->>get(3-3)=get(0)-->> if(0True-->return to get(0) Evaluate printf n=3 Now control transfers to *get(4)*--->>get(4-3)=get(1)--> if(1>False-->>Hence now get(n-1) will evaluate.(note:n=1 for following statements) -->>get(1-1)=get(0)-->> if(0return at get(1)-->now printf will evaluate and print n=1 n=1 Control will shift back to parent function i.e. get(4) hence it will print n=4 Control shifts to *get(5)*--->>get(5-3)-->>get(2)--> if(2False--> get(n-1) will eval. Now n=2, get(n-1)=get(1)--> if(1False-->return to get(2)-->>get(n-1)-->get(1) And as get(1) evaluates printf will consider n=1 Hence n=1 will be printed And control shifts to get(2) i.e.get(5-3)i.e.get(n-3) Hence printf will evaluate n=2. Control will shift back to parent function get(5) Hence will print n=5 Same applicable for get(6) n=1 n=2 n=3 n=6 O/p:-- 123141251236 I understood this much...still confused. It will be more helpful if someone can elaborate it more in deapth ..🥰
@@hetaeramancer The Graduate Aptitude Test in Engineering (GATE) is anexamination that primarily tests the comprehensive understanding of various undergraduate subjects in engineering and science for admission into the Masters Program and Job in Public Sector Companies in India.
sir pls expaliN how the OUTPUT is printed : o/p is::: 1 2 3 1 4 1 2 5 1 2 3 6 pls explain each one by one its really cant understand with out u! Thanks for above wonderful simple explanation ........
the get(n-3) value goes less than 1, the base case is triggered, it says to the caller, just stop what ever you're doing and return, at this point whatever the poor function get(n-3) had as the value of n, it prints it out in the next line and that explains the output! Try and dry run it on a sheet, you will see how the calling goes.
ok so u see when we were calling the get(n-1) function, we were not able to reach the printf function. even after going to the get(n-3) function,..since the returned number were (n
get(1) completes get(0) and get(-2) so after that it wont call again so it will return to its parent call that is get(2) u can think it like the student reports to the teacher after all the work ,the teacher reports to the higher authority and so on ..
could u plz make a video on how to guess the last part of recursive cuz teachers r making questions in exam which they give first part of recursive code and want us to write the other part.
@@arjunshaik3071 It's difficult to explain through text only. You need to visualize it. You may put the code in visualgo.net/en/recursion and visualize. But you should know how recursion stack works.
Output: 12131241213512131246 and the function will be called 41 times , there is some mistake in above solution (explained in video) as you can check by running the program and counting the calls by a global variable initialized with zero.
"get" function will be called 41 times , there is some mistake in above solution (explained in video) as you can check by running the program and counting the calls by a global variable initialized with zero.
When we get the 1st get(0) after that why aren't we pop'ing out all the way back to get(6) & instead going to get(-2)? Unable to understand. Please explain.
fun fact: activation record also stores execution line where the function last left its execution and when it returns it starts executing from next line of execution line stored. I hope this comment will reduce the confusions if there are any +-------------------------------------+ | Activation Record for 'get' | +-------------------------------------+ | Parameters: | | | +-------------------------------------+ | Local Variables: | | | +-------------------------------------+ | Return Value: | | | +-------------------------------------+ | Execution Line: | | get(n-1); | +-------------------------------------+
the tree makes sense but I cannot possibly understand the concept behind it. I'll come back to this when I'll have better knowledge
😂😂
This que is so looking so interesting... For now I didn't get the concept... Will definitely return to this que after getting some more concept about recursion 🙂
Guys watch it again to understand..
And for if(n
After get(0) -->if(0True-->return-->
control goes to
*get(1)*---->> then get(n-3)=get(-2) and then if(-2True-->return to get(-2)
And then evaluate print(n)
------->>>>here n=1 hence will be printed..
Then control shifts to
*get(2)*---->>get(2-3)=get(-1) then control will shift to if(-1>True-->>return-->get(-1)
Then printf will get evaluated and hence will print
n=2
Then control shifts to
*get(3)*--->>get(3-3)=get(0)-->>
if(0True-->return to get(0)
Evaluate printf
n=3
Now control transfers to
*get(4)*--->>get(4-3)=get(1)-->
if(1>False-->>Hence now
get(n-1) will evaluate.(note:n=1 for following statements)
-->>get(1-1)=get(0)-->>
if(0return at get(1)-->now printf will evaluate and print n=1
n=1
Control will shift back to parent function i.e. get(4) hence it will print
n=4
Control shifts to
*get(5)*--->>get(5-3)-->>get(2)-->
if(2False--> get(n-1) will eval.
Now n=2, get(n-1)=get(1)-->
if(1False-->return to get(2)-->>get(n-1)-->get(1)
And as get(1) evaluates printf will consider n=1
Hence n=1 will be printed
And control shifts to get(2) i.e.get(5-3)i.e.get(n-3)
Hence printf will evaluate
n=2.
Control will shift back to parent function
get(5)
Hence will print n=5
Same applicable for get(6)
n=1
n=2
n=3
n=6
O/p:-- 123141251236
I understood this much...still confused.
It will be more helpful if someone can elaborate it more in deapth ..🥰
thank you for sharing this i am also confused with that now it is much more clear
coming back in this question is really confusing. please explain more clearly and easily. I am really looking forward to it.
Confused program changed to simple program through your explanation 👌
🧢
This is a very confusing problem 🙁
Now I understood how the gate questions be.
What does GATE mean?
@@hetaeramancer The Graduate Aptitude Test in Engineering (GATE) is anexamination that primarily tests the comprehensive understanding of various undergraduate subjects in engineering and science for admission into the Masters Program and Job in Public Sector Companies in India.
@@hetaeramancer Graduate Aptitude Test in Engineering
Now I understood how multiple recursion works...
Thank you bro
how is the condition is true when n=1 and if (n
No if it's n
Thats not how compiler will work its just takes the argument if 1 is less than 1 which in this case it's not therefore it will execute further
and if it executes further it must not reach to get(0) part, there might be some problem with operators.
This program is really very confusing..
No it ain't
@@Sake679 stfu
Though your explanation is excellent, this question is quite confusing😅. I guess I will come back again after watching some more videos.
All are confused😅
@@nothingHere_X hmmmm
This problem is quite confusing ..I think 🤔 I need to watch it several times ...but ur way of explanation is pretty good
No need to watch several times ,
KHABY : LIFE MADE EAZY
sir pls expaliN how the OUTPUT is printed :
o/p is::: 1 2 3 1 4 1 2 5 1 2 3 6
pls explain each one by one its really cant understand with out u!
Thanks for above wonderful simple explanation ........
the get(n-3) value goes less than 1, the base case is triggered, it says to the caller, just stop what ever you're doing and return, at this point whatever the poor function get(n-3) had as the value of n, it prints it out in the next line and that explains the output! Try and dry run it on a sheet, you will see how the calling goes.
I have to watch for infinite times🤯😂😂
These questions deserve 100.marks 😂
I didn't understand when to use gate(n-1) and when to use get(n-3) .Please help me.
Its non tail recursive implement it's concept
@@dipeshranadipeshrana881yo he didn't mention any concept like that, in tail recursion there is no need to keep record of past recursions
If( 1< 1 ) , this condition is false so how get(0) is evaluated ?
No it's true cause 1< 1 so we go to zero function next
@@Sake679 no this is false 1
@@dekhbhai9328 1 is not less than 1,1 is equal to 1
therefore ,condition is true
@@MurariSingh-mw8ze no bro there is clearly mention n
@GAURAV MALHOTRA ya condition is false so it will not return . so get(0) will be called .
Please think it like that :
if(n-1)
{
return;
}
Beautiful explanation sir
this might be wrong, as when Get(1) is formed value of N is 2. and so on. sir please reply?
it is not 2, it is -2.
How after get(-2) it goes back to get(1) and then to get(2) ??
same doubt. but if you understand by now,can you please explain it?
I just wonder why we called the get() function 25 times, but when we run this code there are only 12 numbers are printed out?
ok so u see when we were calling the get(n-1) function, we were not able to reach the printf function. even after going to the get(n-3) function,..since the returned number were (n
For all those who have had difficulty solving it, don't give up, try and try again; Sooner or later you will understand it, I assure you!
Please suggest any book for such questions 🥺🥺🥺
Ans should be 35...not 25 as when (n-1)=1 ; then (n-3)= -1 , not -2 & here @nesoacademy has done a mistake by taking (n-3)=-2, plz recheck it!
this is code for this recursion to count the Recursion output and count for calling
#include
int count=1;
void get(int n)
{
if(n
why do you initialize count from one bro
what is logic
@@BilalBerek-tl3tq to count or include first call to get(6) by main() function
Guys 1
Tough one nicely done ✔ 👏
Please any body reply me
Why we return to get(2) after get(1)
At 3:44 seconds in video??
Please let me know
get(1) completes get(0) and get(-2) so after that it wont call again so it will return to its parent call that is get(2)
u can think it like the student reports to the teacher after all the work ,the teacher reports to the higher authority and so on ..
Maybe bcoz its void!?
I am having the same doubt. If anyone can clear it with valid concept
because of this is recursion.....so compiler automatically set up as recursion body so it's going get(1) to get(2);-)
Hello, can you please make a vedio on space and time complexity in c
Nice explanation sir...
could u plz make a video on how to guess the last part of recursive cuz teachers r making questions in exam which they give first part of recursive code and want us to write the other part.
my question is after calling get(1) in get(4) the get(1) should go back to get(2)
at that point get(1) is branch of get(4) not get(2)..... or you can say get(1) comes from get(4) it will simply retrun back to it...
Awesome Explanation
Sir superb explanation sir.
after get (5) to get(4) to so on get(1) after that it becomes get(0) and it prints o and it comes out of the function right? please reply fast sir
Superb explanation
Superb... Content
I have a query in condition if( n
get(1) is called because the condition says strictly less than 1. When it calls get(0), the condition gets true and it goes back to get(1).
Guys dont get confused .
Watch it twice
U will get it ..
@@jeedikantivenkat7814 thanks
@@vivekojha4807 bro can u explain in clean manner plz
@@arjunshaik3071 It's difficult to explain through text only. You need to visualize it. You may put the code in visualgo.net/en/recursion and visualize. But you should know how recursion stack works.
Great explaination
Amazing question.nicely explained sir
What if we are asked about print output. Can anybody explain please?
Output: 12131241213512131246
and the function will be called 41 times , there is some mistake in above solution (explained in video) as you can check by running the program and counting the calls by a global variable initialized with zero.
@@VikasKumar-xu8if 41 toh option mein bhi nahi hai
Before starting video I made guss like
(1+3)*6 = 24, so answer should be 25 😂😂✌️
you will end up getting an A if you keeping guessing like this :D
I have a doubt that when the fun will be 1 then at that time the condition is going to get wrong bcz if (n
Excellent
Am I the only one who found it easy and got the answer first try?
This question's not worth the trouble for 2 marks
take a bow... god of C
Can you explain with output
It is wrong:- when get(1) called the function returns there is no way to call get(0)
Its not 1 = 1 its n < 1
Thank you sir.
Thank you
Thank you SIr
Answer is Option B, 25
I wonder what real program/algorithm would behave like that
If you solved it in your mind you gonna confuse at some time so I solved it using method II and got correct answer on my first try
Which 2nd method
Thank you :)
Is this indirect recursion?
But when get(1) function is called .. condition(n
Yes. After get (1) is called ,as (n
Here get function is not in the if function.. so here condition failed if is not evaluted .. so control reaches to get (0)👍
how there is 7 calls , i mean i got confused, i am getting 6 calls which gives me total 24 calls can you elaborate please
count the get(6) call too
First we call get(6) till get(0) total 7 calls
Then iteration
"get" function will be called 41 times , there is some mistake in above solution (explained in video) as you can check by running the program and counting the calls by a global variable initialized with zero.
@@VikasKumar-xu8if But 41 is not present in the options.
Nice problem.
Understood
Answer is (B) 25
here first iteration get(1)
Its not 1 = 1 its n < 1
super question
Thank u
2:52 is that part i am confused on
So my understanding is that the first recursive call at the end of the sequence stops because it satisfy the "n
Sir how have you gone from step get(4) to get (5) as the value n will be 1 and we need to satisfy the condition n
yes thats why he writes +2 calls.he means that get(4-3)=get(1) plus what g(1) calls. But we know what get(1) calls!!! it calls get(0) and get(-2) n
DUDE YOU ARE DOPE
Can someone explain me the answer
May I know your name sir?
So much confusion 😕😐..
N value????
This question is very interesting ❤️
not able to understand this one
When we get the 1st get(0) after that why aren't we pop'ing out all the way back to get(6) & instead going to get(-2)?
Unable to understand. Please explain.
👍
But there are 24 calls not 25
you did not count first call from main function for get(6).
Guys dont get confused
Its very easy
stfu mate
Can u explain it
U R right bro
This paper setter will definitely go in hell....
Brainstrorming
fun fact: activation record also stores execution line where the function last left its execution and when it returns it starts executing from next line of execution line stored. I hope this comment will reduce the confusions if there are any
+-------------------------------------+
| Activation Record for 'get' |
+-------------------------------------+
| Parameters: |
| |
+-------------------------------------+
| Local Variables: |
| |
+-------------------------------------+
| Return Value: |
| |
+-------------------------------------+
| Execution Line: |
| get(n-1); |
+-------------------------------------+
do you mean this by saying how the execution flow was from get (n-1) until n =0 and after this the flow was from only (n
Awesome Explanation
Thank you sir ❤
👍