J'essaie de trouver un problème en utilisant la récursivité mais chaque fois que ma valeur de retour est .Fonction récursive renvoyant une valeur erronée en C#
Voici ma fonction
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;
}
Et voici mon appel
int returnValue = numberOfCoins(32, 0);
Console.WriteLine("counter: " + returnValue);
L'objectif est de revenir le changement à l'utilisateur en lui donnant le plus petit nombre possible de pièces de monnaie, les pièces disponibles sont 25, 10, 5 et 1, donc dans ce cas return value
devrait être . Je l'ai utilisé tous les points d'arrêt et fonctionne bien jusqu'à la dernière minute où compteur tourne, la valeur de à 1.
Permettez-moi de dire encore une fois, je peux facilement résoudre ce problème en utilisant la boucle, mais mon but est de comprendre recursion
mieux. Toute suggestion est utile, merci de votre temps.
Astuce: aucun de vos appels récursifs ne quelque chose d'utile, étant donné que vous n'êtes pas en utilisant la valeur de retour de leur part. Vous faites beaucoup de travail, mais vous ignorez le résultat. –