[英]Recursive function returning wrong value in C#
我試圖使用遞歸來計算一些問題集,但每次我的返回值為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,因此在這種情況下, return value
應為4 。 我已經使用了斷點,所有工作都很好,直到最后一刻,計數器將值從4變為1。
讓我再說一遍,我可以使用循環輕松解決這個問題,但我的目標是更好地理解recursion
。 任何建議都有幫助,謝謝你的時間。
當您撥打numberOfCoins
您只需丟棄返回值。 相反,您應該使用它並將其添加到當前計數。 這也可以讓你刪除counter
參數:
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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.