I am trying to figure some problem set using recursion but every time my return value is 1.
Here is my function
static int numberOfCoins(int n, int counter)
{
if (n >= 25)
{
counter++;
numberOfCoins(n - 25,counter);
}
else if (n >= 10)
{
counter++;
numberOfCoins(n - 10,counter);
}
else if (n >= 5)
{
counter++;
numberOfCoins(n - 5, counter);
}
else if (n > 0)
{
counter++;
numberOfCoins(n - 1, counter);
}
return counter;
}
And here is my call
int returnValue = numberOfCoins(32, 0);
Console.WriteLine("counter: " + returnValue);
The goal is to return change to user giving him smallest possible number of coins, available coins are 25, 10, 5 and 1, so in this case return value should be 4.
I've used breakpoints and all works fine until last minute where counter turns value from 4 to 1.
Let me say again, i can easily solve this problem using loop, but my goal is to understand recursion better.
Any suggestion is helpful, thank you for your time.