Analiza wyrazenia arytmytecznego rekurencyjnie

0

Witam, mam zrobić "analizatora" wyrazen arytmetycznych rekurencyjnie:
NP:(1+1)*((0+(1+1))+(1+1))

Czy da sie to wykonać? jeśli tak to prosze o wskazówki:) np . jak odczytywać te wyrażenie czy funkcje wywoływać jak napotkamy '(' i jak zwrócić wynik danego nawiasu aby dalej go wykorzystać w następnych obliczeniach.

Przedewszystkime jak zanalizować rekurencyjnie takie wyrażonko:(1+1)*(0+0)
Po prostu nie wiem co zrobić aby wynik pierwszego nawiasu wykorzystać do dalszych obliczeń

proszę o wskazówki :)

0

Proponuję zbudować funkcję, która jako parametr przyjmuje wyrażenie (choćby w postaci napisu), a zwraca wartość tego wyrażenia. Jeśli w wyrażeniu trafi na nawias, wywołuje się rekurencyjnie, podając jako parametr zawartość nawiasu.

Po powrocie z funkcji rekurencyjnej podstawia za nawias wartość i wykonuje działania - jeśli trafi na kolejny nawias, znów wykonuje wywołanie rekurencyjne.

Taki speudokod:

wynik funkcja(wyrazenie)
{
    dopóki ((WyrazenieWNawiasach = ZnajdzNawias(wyrazenie)) != "")
    {
        PodstawZaNawias(wyrazenie, funkcja(WyrazenieWNawiasach));
    }
    zwróć WykonajWyrazenieBezNawiasow(wyrazenie);
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0