Rekursiv funksiyalar to‘g‘risida bilim va ko‘nikmalarga EGA bo‘lish; Rekursiv o‘ylashni shakllantirish
Download 437.38 Kb.
|
Amaliyot 6
fib(int);
int main() { // Foydalanuvchidan Fibonacci qatori indeksini so'rash cout << "Fibonacci sonining indeksini kiriting: "; int index; cin >> index; cout << index << "-chi indeksdagi Fibonacci son " << fib(index) << " ga teng!" < return 0; } // Fibonacci sonini aniqlash funksiyasi int fib(int index) { if (index == 0) // Bazaviy holat return 0; else if (index == 1) // Bazaviy holat return 1; else // rekursiv chaqirish return fib(index - 1) + fib(index - 2); } Yuqoridagi dasturda bajarilgan hisoblashlar qanday kechayotganini qo‘rish qiyin. Quyida keltirilgan rasmda fib(4) holat uchun rekursiv chaqiruvlarning ketma-ketligi ko‘rib chiqilgan. Boshlang‘ich fib(4) funksiya ikkita rekursiv chaqiruvni amalga oshiradi fib(3) va fib(2), undan keyin fib(3)+fib(2) natijasi qaytariladi. Rasmdagi nishonlar funksiyaning chaqirilish ketma-ketligini ko‘rsatmoqda. Rasmda ko‘rganingizdek, ko‘plab qaytariluvchi rekursiv chaqiruvlar amalga oshirilgan. Masalan: fib(2) olat uchun rekursiv chaqiruvlarning ketma-ketligi ko‘rib chiqilgan. Boshlang‘ich fib(4) ikki marotaba chaqirilgan, fib(1) uch marotaba, fib(0) esa ikki marotaba. Umuman olganda fib(indeks) ni hisoblash uchun fib(indeks-1)ga qaraganda ikki marotaba ko‘proq rekursiv chaqiruvlar amalga oshiriladi. Indeks qiymatini oshirganingiz sari, chaqiruvlar soni ham bir qancha oshib boradi, quyidagi jadvaldagiday.
Download 437.38 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling