Click here to Skip to main content
15,877,376 members
Please Sign up or sign in to vote.
2.00/5 (2 votes)
See more:
I was going through some question about recursion . I am having a hard time with recursion .
Here is a question ,we have to evaluate the output of following code :-
On recursion, value of f(513,2)
   return 0;
   return ( n%10 + f(n/10, 2) )

Now starting with 512

we get return ( 3 + f(51,2)
again we have (3+1+f(5,2)
again (4+5+f(0,2))
we have (4+5+0)

With this i get the result =9 . Is is right ?
abbaspirmoradi 31-Aug-13 5:58am    
Correct :
return 0;
Member 10200096 31-Aug-13 6:16am    
And what if n<0 . Will it go to infinite loop??
abbaspirmoradi 31-Aug-13 6:23am    
this is clear my friend .n never be negative if your input is positive..

Probably 9 is right. But the question is not:

1. The first line of the code is not C code - I assume it's part of the textual description or just defines the input.
2. You did not (formally) provide the definition of function f - I assume the last 4 lines of the code describe it. (and I'll silently add that missing ';' at the end)
3. However, f should take 2 arguments, but said code only uses one - the second argument is always constant at value 2! Why is that?

You should work on the accuracy of your descriptions; programming is all about making computers understand your intentions, and none of the above could be accurately guessed by a computer program.

Similarly, if you ask a question about programming, the less accurate your description of the problem, the more likely any answer you get is unusable.
Share this answer
nv3 2-Sep-13 8:04am    
I was about to ask the same thing. +5.
Yes - but the simplest thing to do is try it. Write a simple C function, and call it with your values. See what it does, by following the code execution in the debugger.

To answer your supplementary question, "No" - it will not loop forever if you pass it a negative value, because the test
if (n<0)
terminates execution of the function on a negative value instead of recursing any further.
Share this answer
abbaspirmoradi 31-Aug-13 6:39am    
prefect! +5

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900