Рекурсиялы ішкі программалардың қолданылуы.
Begin Begin Begin
P; операторы; операторы;
операторы; P P;
End; End; операторы
End;
Рекурсивті көтеріліс Рекурсивті түсу Рекурсивті көтеріліс
және рекурсивті түсу
Мұндағы P — рекурсивті ішкі программа. Әрекеттерді ұйымдастыру алгоритмге байланысты. Осы келтірі лген мысалдарды Турбо паскаль тіліндегі функциялар және процедуралар түрінде көрсетейік:
Мысал:
{Функция}
Function Factorial(N:integer):Extended;
Begin
If N<=1
Then Factorial:=1
Else Factorial:=Factorial(N-1)*N
End;
{Процедура}
Procedure Factorial(N:integer; Var F:Extended);
Begin
If N<=1
Then F:=1
Else Begin Factorial(N-1, F); F:=F*N End
End;
Осы мысалдарда программалар рекурсивті көтерілу кезінде орындалады.
Мысал:
Сызықтық массив элементтерінің қосындысын есептеу.
Есепті шешу барысында келесілерді қолданамыз: элементтер саны нольге тең болса, қосынды нольге тең және алдыңғы элементтер қосындысына соңғы элементті қосу, егер элементтер саны тең емес ноль болса.
Program Rec2;
Type LinMas = Array[1..100] Of Integer;
Var A : LinMas;
I, N : Byte;
{Рекурсивті функция}
Function Summa(N : Byte; A: LinMas) : Integer;
Begin
If N = 0 Then Summa := 0 Else Summa := A[N] + Summa(N - 1, A)
End;
{Негізгі программа}
Begin
Write(Массив элементтерінің саны ');
ReadLn(N);
Randomize;
For I := 1 To N Do
Begin
A[I] := -10 + Random(21); Write(A[I] : 4)
End;
WriteLn; WriteLn('Қосынды: ', Summa(N, A))
End.
Қорытындылай келе, рекурсия программалаудың ерекше бір түрі болып табылады. Алайда практикалық жағынан қарағанда рекурсияны қолдану көп есептерде тиімсіз болып табылады. Себебі, ол жадыны толтырады, уақыт көп жұмсалады. Сол үшін практикада қарапайым ішкі программаларды қолданған тиімді.
Достарыңызбен бөлісу: |