Vi fəsil. C++ dilində proqramlaşdırma


Funksiyaların rekursiv olaraq təyini. Rekursiya anlayışı



Yüklə 1,02 Mb.
səhifə24/74
tarix04.01.2023
ölçüsü1,02 Mb.
#121980
1   ...   20   21   22   23   24   25   26   27   ...   74
Alqoritmik dillər(C kitab) (10)

6.18.Funksiyaların rekursiv olaraq təyini. Rekursiya anlayışı
Pascal dilində olduğu kimi C++ dilində də funksiyaları rekursiv olaraq təyin etmək olar. Özündən özünə müraciət edən funksiya rekursiv olaraq təyin olunan funksiya adlanır. Rekursiv funksiyalara misallar:
n!= n=
və s.
Fibonaççi ədədləri; F =F +F , n=2,3, ... F =F =1.
Rekursiv məsələ ümumi halda bir neçə mərhələyə bölünür. Məsələnin həlli üçün rekursiv funksiyaya müraciət edilir. Bu funksiya baza məsələ adlanan sadə məsələni necə həll etməyi “bilir”. Əgər bu funksiyaya daha mürəkkəb məsələnin həlli üçün müraciət edilərsə, onda o, bu məsələni iki hissəyə bölür. Bu hissələrdən birini funksiya həll etməyi bacarır, digər hissəni isə həll etməyi bacarmır. Rekursiyanın yerinə yetirilə bilən olması üçün axırıncı hissə ilkin məsələyə oxşar olmalı və ilkin məsələ ilə müqayisədə daha sadə olmalıdır. Yeni alınan məsələ ilkin məsələ ilkin məsələyə oxşar olur və bu məsələni həll etmək üçün funksiya yenidən özünə müraciət edir. Bu rekursiv müraciət və ya rekursiv addım adlanır. Rekursiv addım return işçi sözü ilə əlaqədardır. Belə ki, onun nəticəsi məsələnin həll oluna bilən hissəsi ilə birləşdirilir və son nəticə formalaşdırılır. Bu son nəticə funksiyaya ilkin müraciət olunan yerə qaytarılır. Rekursiv addım o vaxta qədər davam edir ki, həlli trivial olan baza məsələ alınsın.
n-ə qədər ədələrin faktoriallarının rekursiv funksiya şəklində hesablanmasına baxaq.
# include < iostream>
using namespace std;

unsigned long int factorial(unsigned long);
// funksiyanın prototipi
int main( )
{
// 10-a qədər ədələrin faktoriallarının hesablanması
for (int i=0; i<=10; i++)
cout<< setw(2)<
return 0;
}
// Factorial funksiyasının rekursiv təsviri
unsigned long int factorial (unsigned long n)
{
//baza halı
if (n<=1)
return 1;
//rekursiv addım
else
return n*factorial(n-1);
} // faktorial funksiyasının sonu

Proqramın nəticəsi aşağıdakı kimi olar


0!=1
1!=1
2!=2
3!=6
4!=24
5!=120
6!=720
7!=5040
8!=40320
9!=362880
10!=3628800
5!-ın rekursiv olaraq hesablanması sxemi şəkil göstərilmşdir

a
Yüklə 1,02 Mb.

Dostları ilə paylaş:
1   ...   20   21   22   23   24   25   26   27   ...   74




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin