ПредишенСледващото

Горната програма с помощта на така наречената пряка рекурсия, когато тялото на процедура съдържа самата директно предизвикателство. В ПАСКАЛ позволено също непряко рекурсия, когато, например, на процедура, процедура на призовава процедура Б, а тя, от своя страна, - на процедура А. Дължината на веригата на повикване може да бъде произволно, но е необходимо внимателно да се следи развитието на програмата за тези, към рекурсивни алгоритъм конвергенцията, тоест, не е довело до безкрайна взаимна подпрограма разговор.

Образно непряка рекурсия може да се опише по следния начин. Преди огледалото 1 е огледало 2, който се отразява в огледалото 1. В последния види огледалото 2 и т.н.

Ето един пример, илюстриращ програма косвените рекурсивни процедура повиквания. В тази програма REC1 и Rec2 процедура рекурсивно наричаме помежду си, от своя страна намалява техните реални параметри. Лесно е да се види, че и двете процедури, които работят с един от глобалната променлива, която им се предава чрез линк. Критерият за завършване на това лечение е променлива до нула.

Моля, имайте предвид, че програмата се изисква предварително определение на втората процедура Rec2, тъй като тя се намира в поканата процедура REC1, т.е. преди неговото пълно описание.

Програма KosvRecurs;
Var
А. число;
Процедура Rec2 (Var Y: число); Forward;

Процедура REC1 (Var X: число);
започвам
X: = X 1;
ако X> 0
след това
REC2;
writeln (X)
Край;

Процедура Rec2 (Var Y: число);
започвам
Y: = Y DIV 2;
ако Y> 2
след това
REC1;
writeln (Y)
Край;

Свързани статии

Подкрепете проекта - споделете линка, благодаря!