Algorytm z arkusza maturalnego

Algorytm z arkusza maturalnego
IT
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1
0

Chcę napisać ten algorytm w c++, ale nie wiem jak ma "zakończyć procedurę" przez co wypisuje "X" w nieskończoność.

Korale(n)

  1. Jeżeli n = 1, to
    1.1. nawlecz czarny koralik na prawy koniec sznurka,
    1.2. zakończ działanie procedury.

  2. Jeżeli n jest parzyste, to
    2.1. wykonaj Korale(n/2),
    2.2. nawlecz biały koralik na prawy koniec sznurka,
    2.3. zakończ działanie procedury.

  3. Jeżeli n jest nieparzyste, to
    3.1. wykonaj Korale((n-1)/2),
    3.2. nawlecz czarny koralik na prawy koniec sznurka,
    3.3. zakończ działanie procedury.

Kopiuj
#include <iostream>

using namespace std;

int x=0;

int Korale(int n){
    if (n=1) cout << "X";
    if (n%2==0){
            Korale(n/2);
            cout << "X";
        }
    if (n%2!=0){
            Korale(n-1/2);
            cout << "O";
        }
}

int main()
{
    cin >> x;
    Korale(x);

    return 0;
}
heillos
  • Rejestracja: dni
  • Ostatnio: dni
2
Kopiuj
if (n==1) 
{
 cout << "X";
 return 0;
}
twonek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2500
2

Oprócz @up:

  1. Zmienna globalna
  2. Funkcja nic nie zwraca, a jest deklarowana jako int Korale()
  3. Korale(n-1/2); - a gdzie nawiasy?
  4. Niepotrzebny if (n % 2 != 0), wystarczy else do poprzedniego ifa

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.