Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C语言中返回错误值的递归函数#_C#_Recursion - Fatal编程技术网

C# C语言中返回错误值的递归函数#

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

我试图使用递归来计算一些问题集,但每次我的返回值都是1

这是我的功能

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;
}

提示:如果您没有使用递归调用的返回值,那么这些递归调用都没有任何用处。你做了很多工作,但是忽略了结果。谢谢你,我好像忽视了我的函数每次调用都返回值的事实