Тапсырма:тапсырмаға сәйкес блок-схема мен программа жазу. Бұл кіші топтың барлық дерлік міндеттерін рекурсияны қолданбай оңай шешуге болатынын атап өткен жөн. Бұл жағдай тапсырмаларда итеративті алгоритмдерге оңай қысқартылатын рекурсияның ең қарапайым мысалдары қарастырылғандығына байланысты. Оның үстіне, кейбір жағдайларда рекурсияны қолдану тиімсіз алгоритмдерге әкеледі (мысалы, 4 және 5 тапсырмаларды қараңыз). Дегенмен, дәл осындай мысалдарда рекурсивті алгоритмдерді әзірлеуде бастапқы дағдыларды алу оңайырақ.
№
вар.
Тапсырма
1
N факториалының мәндерін есептейтін Fact (N) және Fact2 (N) ! нақты типті рекурсивті функцияларды сипаттаңыз және қос факторлық N !! сәйкес (N> 0 – бүтін параметр). Берілген бес санның факториалдар мен қосарланған факториалдарын есептеу үшін осы функцияларды пайдаланыңыз.
2
x санының n-дәрежесінің мәнін мына формула бойынша табатын нақты түрдегі PowerN (x, n) рекурсивті функциясын сипаттаңыз: x0 = 1, xn = x · xn – 1 n> 0, xn = 1 / x – n <0 үшін n (x> = 0 – нақты сан, n – бүтін сан). Осы функцияны пайдаланып, берілген X үшін N-нің 5 түрлі мәні үшін XN мәндерін табыңыз.
3
х санының k-ші түбірінің жуық мәнін табатын нақты типті SqrtK (x, k, n) рекурсивті функциясын мына формула бойынша сипаттаңыз: у (0) = 1, у (n + 1) = у (n) - ( y (n) - x / y (n) k – 1) / k, мұндағы y (n) SqrtK (x, k, n) білдіреді (x – нақты параметр, k және n – бүтін сандар; x> 0 , k> 1, n> 0).
Осы функцияны пайдаланып, X және K деректері үшін N-нің 6 түрлі мәні үшін X-тің K-ші түбірінің жуық мәндерін табыңыз.
4
F (1) = F (2) = 1, F (k) = F (k – 2) + F (k) формула бойынша N-ші Фибоначчи санын F (N) есептейтін FibRec (N) рекурсивті бүтін сан функциясын сипаттаңыз. –1), k = 3, 4, ... Бұл функцияны пайдаланып, көрсетілген сандары бар бес Фибоначчи санын табыңыз және оларды табу үшін қажет FibRec функциясына рекурсивті шақырулар санымен бірге осы сандарды шығарыңыз.
5
C (m, n) бүтін рекурсивті функциясын сипаттаңыз, ол m арқылы n элементтің комбинацияларының санын мына формула арқылы табады: C (0, n) = C (n, n) = 1, C (m, n) = C (m , n – 1) + C (m – 1, n – 1) 0 0, 0 <= m <= n) үшін. N саны және M-нің бес түрлі мәні берілген. C (M, N) сандарын оларды табу үшін қажет C функциясына рекурсивті шақырулар санымен бірге басып шығарыңыз.
6
Евклид алгоритмі бойынша екі натурал санның А және В ең үлкен ортақ бөлгішін табатын NOD (A, B) рекурсивті бүтін сан функциясын сипаттаңыз: NOD (A, B) = NOD (B mod A, A) егер A <> 0; NOD (0, B) = B. Осы функцияны пайдаланып, А және В жұптарының ең үлкен ортақ бөлгіштерін табыңыз,
A және C, A және D, егер A, B, C, D сандары берілген болса.
7
Цикл операторын қолданбай N өлшемді А нақты массивінің минималды элементін табатын нақты типті MinRec (A, N) рекурсивті функциясын сипаттаңыз. MinRec1 функциясын пайдаланып, сәйкесінше NA, NB, NC өлшемді A, B, C массивтерінің минималды элементтерін табыңыз.
8
Цикл операторын қолданбай S жолындағы цифрлар санын табатын Digits (S) рекурсивті бүтін сан функциясын сипаттаңыз. Берілген бес жолдағы цифрлардың санын табу үшін осы функцияны пайдаланыңыз.
9
S жолының цикл операторын қолданбай симметриялы екенін тексеретін Simm (S) рекурсивті логикалық функциясын сипаттаңыз. Бұл функцияны бес жолдың деректерін тексеру үшін пайдаланыңыз.
10
Фон Нейман сұрыптау алгоритмі. Біріктіру сұрыптау алгоритмі арқылы a1, a2 ,, an массивтерін кемімейтін ретпен сұрыптаңыз:
а) көршілес элементтердің әрбір жұбы екі элементтен тұратын бір топқа біріктіріледі (соңғы топ бір элементтен тұруы мүмкін);
б) көршілес екі элементті топтардың әрбір жұбы бір төрт элементті топқа біріктіріледі, т.б. Біріктіру орындалған сайын жаңа үлкейту сұрыпталады. Сұрыптау функциясын пайдаланыңыз.
11
Оң және теріс екілік сан берілген. Екілік санау жүйесіндегі сандарды қосу функциясы арқылы осы сандардың қосындысын есептейтін программа құрыңыз екілік санау жүйесіндегі сандарды қосу.
12
Root(a, b, ε) рекурсивті функциясын сипаттаңыз, ол кесіндіні екіге бөлу арқылы ε дәлдікпен [a, b] кесіндісіндегі f (x) = 0 теңдеуінің түбірін табады (деп есептейік). ε> 0, a
13
X массивінің соңғы элементтерінің арасында минимумды k біріншіден бастап табатын minl (k) көмекші рекурсивті функциясын енгізу арқылы сызықтық X массивінің минималды элементін анықтауға арналған min (X) функциясын сипаттаңыз.
14
S жолының i-ден басталып, j-ші элементтерімен аяқталатын S жолының бөлігі симметриялы екенін тексеретін Simm (S, I, J) рекурсивті логикалық функциясын сипаттаңыз.
15
Берілген натурал санның цифрларын кері ретпен жазғанда, одан пайда болатын санды табу программасын құрыңыз. Мысалы, 1234 саны үшін 4321 нәтижесін аламыз.
16
Берілген натурал санды p-ary санау жүйесіне аудару программасын құрыңыз ( 2 ≤ p ≤ 9).
17
Сізге p-ary санау жүйесінде (2 ≤ p ≤ 9) натурал санды білдіретін таңбалар жолы беріледі. Осы санды ондық санау жүйесіне түрлендіру программасын құрыңыз.
18
Сізге n түрлі натурал сандар берілген. Осы сандардың барлық ауыстыруларын басып шығарыңыз.
19
Логикалық функция, егер оның аргументі жай сан болса, True мәнін қайтарады. Жолдан кез келген қосымша бос орындарды алып тастайтын функцияны сипаттаңыз. Егер қатарда екеуінен көп болса, соңғы нүктеден кейін жолдың соңында болса, ашылатын жұп тыныс белгісінен кейін болса, бос орындар қосымша болып саналады.
20
N өлшемді нақты А массивінің әрбір элементін оның көршілерімен орташа арифметикалық мәнімен ауыстыратын Smooth (A, N) процедурасын сипаттаңыз («массивті тегістеу»). А массиві – кіріс және шығыс параметрі, N – кіріс параметрі. Әрбір тегістеу нәтижелерін көрсете отырып, N өлшемді берілген A массивін бес рет тегістеу үшін осы процедураны пайдаланыңыз.
21
Нақты M × N матрицасын А түрлендіретін Гаусс процедурасын (A, M, N, i1, i2, X) келесідей сипаттаңыз: i2 жолын X нақты санға көбейткен i1 жолдан шегеріледі.Екі өлшемді А массиві кіріс және шығыс параметрі, басқа параметрлер кіріс болып табылады. Осы процедураны қолданып, бірінші жолды көмекші ретінде пайдалана отырып, осы M × N матрицасының A қалған жолдарында k-ші бағанның элементтерін нөлге теңестіріңіз (k саны берілген, ал A [1, k] <> 0).
22
M × N матрицасынан A [i, j] элементі бар жол мен бағанды алып тастайтын DelIJ (A, M, N, i, j) процедурасын сипаттаңыз (егер i> M немесе j> N болса, онда матрица өзгермейді)... Екі өлшемді нақты А массиві және бүтін сандар M (> 1), N (> 1) кіріс және шығыс параметрлері, i және j кіріс параметрлері болып табылады. М × N өлшемді А матрицасы және i, j сандары берілген. А матрицасына DelIJ процедурасын қолданып, алынған матрицаны шығарыңыз.