C# C语言中返回错误值的递归函数#
我试图使用递归来计算一些问题集,但每次我的返回值都是1 这是我的功能C# C语言中返回错误值的递归函数#,c#,recursion,C#,Recursion,我试图使用递归来计算一些问题集,但每次我的返回值都是1 这是我的功能 static int numberOfCoins(int n, int counter) { if (n >= 25) { counter++; numberOfCoins(n - 25,counter); } else if (n >= 10) { counter++; numberOfCoins(n - 10
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;
}
这是我的电话
int returnValue = numberOfCoins(32, 0);
Console.WriteLine("counter: " + returnValue);
目标是将零钱返回给用户,给他尽可能少的硬币数量,可用硬币是25、10、5和1,因此在这种情况下,返回值应为4。
我使用了断点,在计数器将值从4转换为1之前,所有断点都可以正常工作。
让我再说一遍,我可以使用循环轻松地解决这个问题,但我的目标是更好地理解递归。
任何建议都很有帮助,谢谢您的时间。当您调用numberOfCoins
时,您只需放弃返回值即可。相反,您应该使用它并将其添加到当前计数中。这也将允许您删除计数器
参数:
static int numberOfCoins(int n)
{
if (n >= 25)
{
return 1 + numberOfCoins(n - 25);
}
else if (n >= 10)
{
return 1 + numberOfCoins(n - 10);
}
else if (n >= 5)
{
return 1 + numberOfCoins(n - 5);
}
else if (n > 0)
{
return 1 + numberOfCoins(n - 1);
}
return 0;
}
提示:如果您没有使用递归调用的返回值,那么这些递归调用都没有任何用处。你做了很多工作,但是忽略了结果。谢谢你,我好像忽视了我的函数每次调用都返回值的事实