Rekursiya
Rekursiya. is. kişi. bax rekursiya.
Folklor
Petro J± dilində yeni bir inkişaf mühiti hazırlayır. Hazırda o, potensial sonsuz rekursiyanı izləyə biləcək bir modul üzərində işləyir.
J± prosedur dilidir. Bu dildəki bütün dəyişənlər ikilikdir və hər biri yalnız iki dəyər ala bilər: "0" və "1". Hər prosedurun bir neçə arqumenti ola bilər. J± dilində aşağıdakı operatorlar mövcuddur:
dəyəri bir artırmaq "x++" - əgər x 0-a bərabərdirsə, o, 1 olur;
dəyəri bir azaltmaq "x–" - əgər x 1-ə bərabərdirsə, o, 0 olur;
şərti operator "if (x) S1 else S2" burada S1 və S2 - istənilən operatorlardır, əgər x 1-ə bərabərdirsə S1-i, əgər x 0-a bərabərdirsə S2-ni icra edin;
prosedur çağırışı "f (x, y)";
birləşmiş operator "{S1 S2 ...}", burada S1, S2, və s. - istənilən operatorlardır: S1, S2, və s. bu ardıcıllıqla icra edin.
Prosedurun təsviri belədir: "<prosedur adı> (<arqumentlər siyahısı>) S" burada S - istənilən operator.
Bütün arqumentlər dəyər üzrə ötürülür (yəni prosedurun içindəki dəyişikliklər çağıran prosedurun müvafiq dəyişənlərinin dəyərlərini dəyişmir).
Məsələn, birinci nümunədəki proqram "inc" prosedurunu ehtiva edir, hansı ki, üç arqument x2, x1 və x0 şəklində üç bitlik dəyər alır və nəhayət, dəyəri bir artırılmış şəkildə təyin edən üç arqumentlə "done" prosedurunu çağırır.
Verilən proqram əsasında müəyyən edin ki, bəzi proseduru elə arqumentlərlə çağırmaq mümkündürmü ki, nəticədə sonsuz rekursiya alınsın.
Giriş verilənləri
Giriş faylı J± dilində proqramı ehtiva edir. O, ən çox 20 prosedurdan ibarətdir, hər bir prosedur ən çox 15 arqumentə malikdir. Giriş faylının ölçüsü 1000 baytdan çox deyil. Prosedur və arqument adları hərflər və rəqəmlərdən ibarətdir və registrdən asılıdır. Bütün adlar 40 simvoldan uzun deyil. Heç bir prosedur "if" və ya "else" adlandırılmır.
Çıxış verilənləri
Əgər bəzi proseduru elə arqumentlərlə çağırmaq mümkündürsə ki, nəticədə sonsuz rekursiya alınsın, "YES" çıxarın, əks halda "NO" çıxarın.