Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Main2 - zadanie Krokodyle

Ostatnio zmodyfikowano 2019-08-03 22:09
Autor Wiadomość
trew
Temat założony przez niniejszego użytkownika
Main2 - zadanie Krokodyle
» 2019-08-01 22:42:34
Witam,
rozwiązuję zadanie "Krokodyle" z kursu na main2: https://main2.edu.pl/c​/konkurs-podstaw-algorytmiki/p​/kro/
Napisałem kod:
C/C++
#include <bits/stdc++.h>

using namespace std;

int przeszkoda( int a, int b )
{
    if( b == 1 ) return a + 1;
   
    return przeszkoda( a,( b - 1 ) % 10000 ) *( a + 1 ) % 10000;
}

int main()
{
    ios_base::sync_with_stdio( NULL );
    cin.tie( NULL );
   
    int P, a, b;
    cin >> P;
    for( int i = 0; i < P; i++ )
    {
        cin >> a >> b;
        cout << przeszkoda( a, b ) << "\n";
    }
   
    return 0;
}
Program działa, ale tylko dla części danych; przy dużych wartościach b sprawdzarka wypisuje błąd: 1b process exited due to signal 7. Dlaczego się tak dzieje? Czy może to być jakiś problem z pamięcią? A może chodzi o dużą liczbę wywołań funkcji przeszkoda()?
P-174968
pekfos
» 2019-08-02 16:36:34
Po co tu w ogóle jest rekurencja?
P-174969
trew
Temat założony przez niniejszego użytkownika
» 2019-08-02 19:32:13
Istotnie łatwiej byłoby zrobić to pętlą, ale zadanie jest załączone do lekcji o rekurencji, dlatego rozważam jak można je tym sposobem rozwiązać. Bardziej niż rozwiązanie interesuje mnie przyczyna pojawiania się błędu w tym programie.
P-174970
pekfos
» 2019-08-03 10:52:41
Przepełnienie stosu. Uruchom program z danymi 1 1 10001.
P-174971
trew
Temat założony przez niniejszego użytkownika
» 2019-08-03 22:09:10
Faktycznie o to chodzi. Dziękuję bardzo za odpowiedź.
P-174972
« 1 »
  Strona 1 z 1