Рекурсия және итерация
Презентация қосу
Рекурсия және
итерация
Тексерген:Дошева Гүлжихан
Орындаған:Елтаев Арынғазы,Турлан Ляззат
• Рекурсия - бұл бағдарлама (немесе функция) өзін тікелей немесе
басқа бағдарламалардан (функциялардан) шақыратын
мәліметтерді өңдеуді ұйымдастыру тәсілі.
• Функция рекурсивті деп аталады , егер оны өңдеу кезінде ол
тікелей немесе жанама түрде басқа функцияларға қоңырауларды
тізбектеу арқылы қайта шақырылса.
• Итерация - бұл кейбір әрекеттерді бағдарламалардың
(функциялардың) рекурсивті шақыруларына соқтырмай бірнеше
рет қайталайтын мәліметтерді өңдеуді ұйымдастыру тәсілі.
• Теорема. Рекурсивті формада жүзеге асырылған ерікті алгоритмді қайталанатын түрде
және керісінше қайта жазуға болады.
• Әрі қарай, біз цикл операторларының және рекурсивті тәсілдің көмегімен жүзеге
асырылатын элементар функциялар жиынтығын қарастырамыз. Кез-келген
бағдарламалау тілінде рекурсивті функцияларды жазбас бұрын, ереже бойынша,
функцияларды есептеу әдісін анықтайтын рекурсивті қатынасты жазу керек .
Қайталану қатынасы кем дегенде екі шартты қамтуы керек:
• I) рекурсияның жалғасу шарты (рекурсия қадамы);
• II) рекурсияның аяқталу шарты.
• Біз рекурсияны функцияны шақыру арқылы жүзеге асырамыз. Бұл жағдайда
функция денесінде алдымен рекурсияның жалғасу шарты тексерілуі керек. Егер бұл
дұрыс болса, онда функциясынан шығыңыз. Әйтпесе, біз рекурсивті қадам жасаймыз.
• Функциясының итерациялық нұсқасы цикл операторының көмегімен жүзеге асыруға болады
арналған .
• 1. Санның факторлық мәні. Теріс емес бүтін факторлық N 1-ден барлық табиғи сандар өнім
болып табылады N және белгіленеді N !. Егер f ( n ) = n ! Болса, онда қайталану қатынасы орын
алады:
• Бірінші теңдік рекурсиялық қадамды - f ( n ) -ді f ( n - 1) арқылы есептеу әдісін сипаттайды .
Екінші теңдік функцияны бағалауды қашан тоқтататынын көрсетеді. Егер сіз оны көрсетпесеңіз,
функция шексіз жұмыс істейді.
• Мысалы, f (3) -ды келесідей есептеуге болады:
• f (3) = 3 f (2) = 3 2 f (1) = 3 2 1 f (0) = 3 2 1 1 = 6
•F(n) есептеу кезінде n рекурсивті шақырулар жасалуы керек .
рекурсивті енгізу циклдық енгізу
int f ( int n) int f ( int n)
{ {
if (! n) return 1; int i, res = 1;
n * f (n - 1) қайтару ; үшін (i = 1; i <= n; i ++) res = res * i;
} қайтару ;
}
Ілгекті іске асырудың идеясы цикл операторын қолдана отырып, санның факториалын тікелей есептеу:
f ( n ) = 1 · 2 · 3 · ... · n
• 2. Сызықтық уақыттағы санның дәрежесі. F ( a , n ) = a n санының
қуатын сызықтық (O ( n )) уақыт бағасымен есептеп шығаруды келесі
қайталану қатынасы арқылы анықтауға болады:
рекурсивті енгізу циклдық енгізу
int f ( int a, int n) int f ( int a, int n)
{ {
if (! n) return 1; int i, res = 1;
a * f (a, n - 1) қайтару ; үшін (i = 0; i
}
Итерациялық нұсқада a · a ·… · a ( n фактор а ) көбейтіндісін есептеу
жеткілікті .
• 3. Логарифмдік уақыттағы санның дәрежесі. F ( a , n ) = a n санының қуатын
есептеу О уақыттық бағамымен (журнал 2 n ) келесідей анықталады:
• Мысалы, оныншы билікке көтерілу келесідей болуы мүмкін:
• Квадрат бір көбейтуге тең болғандықтан , 10- ды есептеу үшін 4 көбейту
жеткілікті.
рекурсивті енгізу циклдық енгізу
int f (int a, int n) int f ( int a, int n)
{ {
if (! n) return 1; int res = 1;
егер (n & 1) a * f (a * a, n / 2) мәнін қайтарса ; ал (n> 0)
қайтару f (a * a, n / 2); {
} егер (n & 1) res * = a;
n >> = 1; a * = a;
}
қайтару ;
}
• 4. Санның цифрларының қосындысы. N натурал санының цифрларының қосындысын
келесідей анықталған f ( n ) функциясы арқылы табуға болады:
• Рекурсияны жалғастырудың шарты: санның цифрларының қосындысы соңғы цифрына
және соңғы цифры жоқ сан цифрларының қосындысына тең (сан 10-ға бөлінеді).
• Рекурсияның аяқталу шарты: Егер сан 0-ге тең болса, онда оның цифрларының
қосындысы 0-ге тең.
• Мысалы, 234 сандарының қосындысы келесідей есептеледі:
• f (234) = 4 + f (23) = 4 + 3 + f (2) = 4 + 3 + 2 + f (0) = 4 + 3 + 2 + 0 = 9
НАЗАРЛАРЫҢЫЗҒА
РАҚМЕТ!!!
Ұқсас жұмыстар
Пәндер
- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.
Ақпарат
Қосымша
Email: info@stud.kz