Witam,
mam problem z rekurencją, a dokładniej jeśli do 8500 wywołań znajdzie się rozwiązanie to jest dobrze ale jeżeli nie to przerywa wywołania, całkowicie się zatrzymuje program. Z czym może być związany problem zatrzymania się wywołań? A chciałbym żeby wywoływane maksymalnie 99999 razy
long long int reku(int liczba,int h, int i, int j, int k, int l)
{
printf("%i,%i,%i,%i,%i\n", h, i, j, k, l);
if (liczba == h*l*k*j*i)
{
if (h != 1)
{
printf("%i", h);
}
if (i != 1)
{
printf("%i", i);
}
if (j != 1)
{
printf("%i", j);
}
if (k != 1)
{
printf("%i", k);
}
if (l != 1)
{
printf("%i", l);
}
return 0;
}
else if (l == 9)
{
reku(liczba,h, i, j, k + 1, 1);
}
else if (k == 9)
{
reku(liczba,h, i, j + 1, 1, l);
}
else if (j == 9)
{
reku(liczba,h, i + 1, 1, k, l);
}
else if (i == 9)
{
reku(liczba,h+1, 1, j, k, l);
}
else
{
reku(liczba,h, i, j, k, l + 1);
}
return 0;
}
int main(void)
{
int liczba = 0;
printf("Podaj liczbe: ");
if (scanf("%i", &liczba) == 0)
{
printf("Incorrect input");
return 1;
}
else
{
if (liczba < 0 || liczba>10000)
{
printf("Incorrect input data");
return 2;
}
}
reku(liczba, 1, 1, 1, 1, 1);
getchar();
getchar();
return 0;
}