J'essaie d'apprendre à écrire des fonctions récursives en C et j'ai écrit cette fonction qui compte le nombre de zéros dans un nombre positif spécifié, comme une pratique . Mais, il ne peut gérer qu'une entrée d'une longueur maximale de 10. L'entrée avec 11 numéros ou plus échoue et je ne vois pas pourquoi.Fonction récursive en C - ne peut pas gérer une grosse entrée [nombre zéros]
Ex.
input = 1204067809 (correct)
output = 3
input = 12040678091 (fails!!)
output = 0
input = 120406780914234(fails!!)
output = 1
code:
#include <stdio.h>
int rCountZeros1(int num);
int main()
{
int number;
printf("Enter the number: \n");
scanf("%d", &number);
printf("rCountZeros(): %d\n", rCountZeros(number));
return 0;
}
int rCountZeros(int num)
{
if (num==0)
return 1;
else if (num<10)
return 0;
if (num % 10 == 0)
return 1+rCountZeros(num/10);
else
return rCountZeros(num/10);
}
vos valeurs ne tiennent pas dans un nombre entier. essayez 'long long' –
Votre programme peut également échouer avec un numéro à 10 chiffres, par exemple' 2147483647 + 1' –