0
regarding recursion in c language
in this code at return a*power(a,b-1); i not understood the concept of power(a,b-1) whats the use case of a here because it is called outside? please explain me or dry run so i can understand!! this code is for calculation of power eg a=2 b=5 then a will multiply 5 times 2*2*2*2*2 please explain me the use case of a in the power(a,b-1) #include<stdio.h> int power(int a,int b){ if(b==0){ return 1; } return a*power(a,b-1); } int main(){ int a; int b; printf("Enter an base value:"); scanf("%d",&a); printf("Enter an power value:"); scanf("%d",&b); int ans=power(a,b); printf("%d",ans); return 0; }
10 ответов
+ 3
Actually that was not the best way to visualize the code.
A better way is
power(2, 5) = 2*power(2, 4)
power(2, 4) = 2*power(2, 3)
power(2, 3) = 2 *power(2, 2)
power(2, 2) = 2*power(2, 1)
power(2, 1) = 2*power(2, 0)
power(2, 0) = 1
power(2, 1) = 2*1 = 2
power(2, 2) = 2*2 = 4
power(2, 3) = 2*4 = 8
power(2, 4) = 2*8 = 16
power(2, 5) = 2*16 = 32
+ 5
Ishan Gurjar
Marking an answer as "best" is supposed to show appreciation for the person who helped you and help other users to find the answer when they read your thread.
Do not mark your own answer as best when it is not a solution to the problem.
+ 3
Ishan Gurjar, you do not act decently by marking yourself, your beloved as the best answer.
Wong Hei Ming, I tried, I spent my time trying to explain the work of recursion to you, and you...
+ 2
Solo, the first answer was how I wrote on paper. And then realised I read the second visualization somewhere else.
I myself think recursion is hard to get to and I didn't use it. But helping someone to better understand is worth to do, so I wrote the second answer.
+ 2
Wong Hei Ming, I absolutely agree with you – this is one of the best teaching methods and yes, the second answer better reflects the sequence of recursion execution. This is easy to see in the code:
https://code.sololearn.com/cv5MDdX4D5x2/?ref=app
In general, everything is much simpler in this recursive function, it constantly returns the same multiplier a:
power(2,5);
>>>
return 2*1*2*2*2*2;
+ 1
I don’t know about c but know Python, and the recursion concept is the same.
Think of a table
------return
a, b a*power(a, b-1)
2, 5 2*power(2, 4)
2, 4 2*power(2, 3)
2, 3 2*power(2, 2)
2, 2 2*power(2, 1)
2, 1 2*power(2, 0)
2, 0
Which in turn
a, b = 2*power(a, b-1)
2, 5 = 2 * 16 = 32
2, 4 = 2 * 8 = 16
2, 3 = 2 * 4 = 8
2, 2 = 2 * 2 = 4
2, 1 = 2 * 1 = 2
2, 0 = 1
Final result = 32
+ 1
Ishan Gurjar, you can address each person individually through the @ symbol, after which a list of users will pop up.
0
ok thanks..
0
how can i say thanks to you guys *Wong Hei Ming*, *solo,* *Lisa*
there is no option for repliying..
thanks i understood this power function recursion now once agian thanks..
0
@solo thanks