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