SlideShare a Scribd company logo
1 of 15
Функциялар
Мысалы, 5! = 1 ⋅ 2 ⋅ 3 ⋅ 4 ⋅ 5 = 120 есептеу керек. Факториалды for циклды пайдаланып оңай
есептеуге болатыны түсінікті. Бірақ егер программада бірнеше сандар факториалын есептеу керек
болса, онда оны бір рет жазып оны әр жерлерге көшіріп жазуға болады, бірақта ол тиімді емес.
Сондықтан программалауда функциялар бар.
Функция — бұл программаның қалған бөлігінен оқшауланған және шақырылған кезде ғана
орындалатын кодтың бөліктері.
Мысалы sqrt(), len() және print() функциялары. Олардың барлығы ортақ қасиеттерге тән: олар
параметрлерді (нөл, бір немесе бірнеше) қабылдап, мәндерді қайтарады. Мысалы, sqrt() функциясы
бір параметрді қабылдайды және мәнді (түбір астындағы санды) қайтарады. Ал print() функциясы
айнымалы сандарды қабылдап, ештенені қайтармайды.
Енді кез келен санның факториалын есептейтін функцияны жазайық. Factorial() функиясы бір
параметрді қабылдайды да, мәнді қайтарады.
def factorial(n):
res = 1
for i in range(1, n + 1):
res *= i
return res
print(factorial(3))
print(factorial(5))
Функциялар
Нәтижесі:
6
120
Функциялар
1) Функция коды программаның басында (функцияны қолданар алдында) орналасу керек;
2) Функцияның бірінші жолы түсініктеме ретінде қолданылады (factorial() – идентификатор, яғни
функция аты). Идентификатордан кейін дөңгелек жақшада параметрлер тізімі жазылады;
3) Қос нүктеден кейін бос орын қалдырылып функция денесі жазылады.
4) Функция ішінде n факториал есептеліп res айнымалысына жазылады.
5) Функция return res инструкциясы арқылы функцияны аяқтайды да res айнымалысына мәнді
қайтарады.
6) Return инструкциясы функцияның кез келген жерінде қолданыла алады, оның орындалуы функция
жұмысын тоқтатады.
7) Егер функция мәнді қайтармайтын болса, онда return инструкциясы қайтармайтын мәнсіз
қолданылады.
8) Мән қайтармайтын функцияларда return инструкциясын қолданбауға болады.
2 мысал: екі сан қабылдайтын және екеуінің үлкен мәнін қайтаратын max() функциясын жазу.
def max(a, b):
if a > b:
return a
else:
return b
print(max(3, 5))
print(max(5, 3))
print(max(int(input()), int(input())))
3 мысал: үш сан қабылдайтын және олардың ішінен үлкен мәнді қайтаратын max3() функциясын
жазу.
def max3(a, b, c):
return max(max(a, b), c)
print(max3(3, 5, 4))
Функциялар
Нәтижесі:
5
5
62
34
62
Нәтижесі:
5
Пайтон тілінде аргументтердін айнымаы сандарын қабылдайтын және олардың үлкенін өайтаратын
стандартты max() функциясы бар. Программада бұл функция қолдану мысалы:
def max(*a):
res = a[0]
for val in a[1:]:
if val > res:
res = val
return res
print(max(3, 5, 4))
Осы функцияға жіберілетін барлық параметрлер, функцияны жариялау жолында белгіленген
жұлдызша а атты бір кортежге жиналады.
Кортеж (tuple) – бұл өзгермейтін объектілер тізімі. Кортеждер тізімдермен ұқсас болып келеді, бірақ
бір ерекшелігі ол – кортеж элементтерін өзгертуге болмайды және оларды тізімдегідей тік жақшаға
емес дөңгелек жақшға жазады.
Функциялар
Нәтижесі:
5
Кортеж қарапайым, үтірмен бөлінген элементтерді меншіктеу арқылы құрылады. Немесе оларды
жақшаға алып жзуға болады. Мысалы:
tup1 =('physics', 'chemistry', 1997, 2000)
tup2 =(1, 2, 3, 4, 5)
tup3 ="a", "b", "c", "d"
Бос кортеж боc жақшалармен көрсетіледі:
tup1 =()
Бір элементтен тұратын кортжді көрсететін болсақ, онда жазылған элементтен кейін де міндетті
түрде үтір қойылады:
tup1 =(50,)
print (tup1[0])
Функциялар
Функцияның сыртында жарияланған, және функция ішінде қол жетімді айнымалылар жаһандық
(глобалды) деп аталады.
Мысалы:
def f():
print(a)
a = 1
f()
Мұндағы: а айнымалысына 1 мәні меншіктелінеді, және f функция жарияланғанша бұл айнымалы
иницалданбаса да f() функциясы осы мәнді баспаға шығарады. f() функцияны шақырғанға деййін
айнымалыға мән меншіктеледі, сондықтан f() функциясы оны экранға шығары алады.
Жергілікті және жаһандық айнымалылар
Функцияның сыртында жарияланған, және функция ішінде қол жетімді айнымалылар жаһандық
(глобалды) деп аталады.
Мысалы:
def f():
print(a)
a = 1
f()
Мұндағы: а айнымалысына 1 мәні меншіктелінеді, және f функция жарияланғанша бұл айнымалы
иницалданбаса да f() функциясы осы мәнді баспаға шығарады. f() функцияны шақырғанға деййін
айнымалыға мән меншіктеледі, сондықтан f() функциясы оны экранға шығары алады.
Жергілікті және жаһандық айнымалылар
Егер айнымалыны функция ішінде жарияласа, онда оны функциядан тыс жерде қолданыла алмайды.
Бұндай айнымалыларды жергілікті (локалды) де атайды.
Мысалы:
def f():
a = 1
f()
print(a)
Нәтижесінде NameError: name 'a' is not defined қатесін аламыз. Осындай анымалылар функция
сыртына шыққанда қол жетпес болады.
Егер жаһандық айнымалының мәнін функция ішінде өзгертетсе, онда:
1 және 0 сандары шығарылады. Функция ішінде а мәні өзгерсе де, функция
сыртында ол өзгермей қалды. Бұл жаһандық айнымалыларды функция ішінен
кез-келген өзгертулерден «сақтау» мақсатында жазылған.
Жергілікті және жаһандық айнымалылар
def f():
a = 1
print(a)
a = 1
f()
print(a)
Егер функция циклдан і айнымалысы арқылы шақырылса, және де бұл функцияда да циклды
ұйымдстыру үшін і айнымалысы қолданылса, онда олар әр түрлі болу керек.
def factorial(n):
res = 1
for i in range(1, n + 1):
res *= i
return res
for i in range(1, 6):
print(i, ' ! = ', factorial(i), sep='')
қатесін аламыз. Осындай анымалылар функция сыртына шыққанда қол жетпес болады.
Рекурсия
Нәтижесі:
1! = 1
2! = 2
3! = 6
4! = 24
5! = 120
Функция жаһандық айнымалының мәнін өзгерту үшін, осы айнымалыны функция ішінде жаһандық
айнымалы ретінде, global кілттік сөзі көмегімен жариялау керек:
def f( ):
global a
a=1
print(a)
a=0
f( )
print(a)
Нәтижесі a айнымалысы жаһандық ретінде жарияланған, және оның функция ішіндегі өзгеруі,
айнымалының функциядан тыс жерде де қол жетімді болатынына көрсетеді.
Ескерту: Жаһандық айнымалыны функция ішінде өзгертпегені жақсы.
Жергілікті және жаһандық айнымалылар
Нәтижесі:
1
1
# Кодтын басында жазылған бөлігін, бір программадан екінші программаға көшіріп жаза беруге
болады:
def factorial(n):
res = 1
for i in range(2, n + 1):
res *= i
return res
n = int(input())
f = factorial(n)
print(n, '! = ', f)
# әрі қарай f айнымалысымен кез-келген әркеттерді орындауға болады.
Жергілікті және жаһандық айнымалылар
Нәтижесі:
5! = 120
Рекурсия дегеніміз – бұл өзін-өзі шақыратын функция, ал рекурсияны қолданатын функция
рекурсивті функция деп аталады.
Рекурсия көмегімен n! есептеп көрейік:
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n - 1)
print(factorial(5))
Есакерту: Рекурсивті функция құру кезінде рекурсияның аяқталуын міндетті түрде жариялау керек,
әйтпесе шексіз функция болуы мүмкін. Шексіздік рекурсивті функцияны жариялаудын екі түрі:
1) Рекурсиядан шығуды дұрыс емес жариялау. Мысалы, егер программада факториалды есептеу
кезінде if n == 0 шартын жазбасақ, онда factorial(0) factorial(-1)-ді шақырады, ал factorial(-1)
factorial(-2)-ні шақырады және т.с.с.
2) Дұрыс емес параметрлі рекурсивті функцияны шақыру. Мысалы, егер factorial(n) функциясы
factorial(n) шақырса, онда тура солай сияқты шексіз функция пайда болады.
Рекурсия
Нәтижесі:
120
Мысалы, Фибоначчидін n-ші санын екі түрімен есептеу.
Циклды қолданып n-ші санын есептеу:
Алгоритмі:
1. Тізбектін алғашқы екі (fib1 және fib2) мәнін енгізу.
2. Анықталатын элементтін нөмірін енгізу (n)
3. Төмене көрсетілген әрекеттерді екі бірлікке азайтылған (өйткені fib1 және fib2 белгілі) n рет
қайталау. 3.1. fib1 және fib2 қосу, және оны үшінші (fib_sum) айнымалыға меншіктеу.
3.2. Алғашқы мәндерін ауыстыру керек: fib1=fib2, ал fib2=fib_sum
Рекурсияны қолданып n-ші санын есептеу:
Алгоритмі:
1. Егер n=1 немесе n=2, онда шақырылатын тармағына бір бірлікті қайтару (себебі, Фибоначчи
тізбегінің бірінші және екінші элементтері бірге тең).
2. Қалған басқа жағдайларды сол функцияны n-1 және n-2 аргументімен қайта шақыру. Екі шақырудың
нәтижесін қосып, оны программанын шақырылатын тармаққа қайтару керек.
Python тілінде жазылуы:
Тексеріс үшін Фибоначчи сандары: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584,
4181, 6765, 10946,…
fib1 = 1
fib2 = 1
n = input (“Фибоначчидін қай n-ші санын
есептейсіз? ")
n = int(n) # бүтір санға түрлендіру
i = 2
while i < n:
fib_sum = fib2 + fib1
fib1 = fib2
fib2 = fib_sum
i += 1
print (fib_sum)
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n - 1)
print(factorial(5))

More Related Content

What's hot

Event sourcing w PHP (by Piotr Kacała)
Event sourcing w PHP (by Piotr Kacała)Event sourcing w PHP (by Piotr Kacała)
Event sourcing w PHP (by Piotr Kacała)GOG.com dev team
 
U.cs101 алгоритм программчлал-13
U.cs101   алгоритм программчлал-13U.cs101   алгоритм программчлал-13
U.cs101 алгоритм программчлал-13Badral Khurelbaatar
 
Matematika Diskrit - 05 rekursi dan relasi rekurens - 04
Matematika Diskrit - 05 rekursi dan relasi rekurens  - 04Matematika Diskrit - 05 rekursi dan relasi rekurens  - 04
Matematika Diskrit - 05 rekursi dan relasi rekurens - 04KuliahKita
 
2. Persamaan Linier2020.pptx
2. Persamaan Linier2020.pptx2. Persamaan Linier2020.pptx
2. Persamaan Linier2020.pptxYodaKurniaWijaya
 
Sifat Limit Fungsi Aljabar dan Contoh Soal
Sifat Limit Fungsi Aljabar dan Contoh SoalSifat Limit Fungsi Aljabar dan Contoh Soal
Sifat Limit Fungsi Aljabar dan Contoh SoalAsrifida Juwita Tanjung
 
Sisteme de Operare: Securitatea memoriei
Sisteme de Operare: Securitatea memorieiSisteme de Operare: Securitatea memoriei
Sisteme de Operare: Securitatea memorieiAlexandru Radovici
 
Matemaika Diskrit - 04 induksi matematik - 03
Matemaika Diskrit - 04 induksi matematik - 03Matemaika Diskrit - 04 induksi matematik - 03
Matemaika Diskrit - 04 induksi matematik - 03KuliahKita
 
作業系統基本觀念複習
作業系統基本觀念複習作業系統基本觀念複習
作業系統基本觀念複習azole Lai
 
Sisteme de Operare: Memorie virtuala
Sisteme de Operare: Memorie virtualaSisteme de Operare: Memorie virtuala
Sisteme de Operare: Memorie virtualaAlexandru Radovici
 
如何寫好程式
如何寫好程式如何寫好程式
如何寫好程式Chris Wang
 
rekursi dan relasi rekurens
rekursi dan relasi rekurensrekursi dan relasi rekurens
rekursi dan relasi rekurenstedi_apendi
 
Korelasi Point Biserial
Korelasi Point BiserialKorelasi Point Biserial
Korelasi Point BiserialLina Mursyidah
 

What's hot (20)

Event sourcing w PHP (by Piotr Kacała)
Event sourcing w PHP (by Piotr Kacała)Event sourcing w PHP (by Piotr Kacała)
Event sourcing w PHP (by Piotr Kacała)
 
Лекц №9
Лекц №9Лекц №9
Лекц №9
 
визуаль програмчлал тест
визуаль програмчлал тествизуаль програмчлал тест
визуаль програмчлал тест
 
U.cs101 алгоритм программчлал-13
U.cs101   алгоритм программчлал-13U.cs101   алгоритм программчлал-13
U.cs101 алгоритм программчлал-13
 
Alin 3.1 3.3
Alin 3.1 3.3Alin 3.1 3.3
Alin 3.1 3.3
 
Matematika Diskrit - 05 rekursi dan relasi rekurens - 04
Matematika Diskrit - 05 rekursi dan relasi rekurens  - 04Matematika Diskrit - 05 rekursi dan relasi rekurens  - 04
Matematika Diskrit - 05 rekursi dan relasi rekurens - 04
 
2. Persamaan Linier2020.pptx
2. Persamaan Linier2020.pptx2. Persamaan Linier2020.pptx
2. Persamaan Linier2020.pptx
 
Se304
Se304Se304
Se304
 
Sifat Limit Fungsi Aljabar dan Contoh Soal
Sifat Limit Fungsi Aljabar dan Contoh SoalSifat Limit Fungsi Aljabar dan Contoh Soal
Sifat Limit Fungsi Aljabar dan Contoh Soal
 
Sisteme de Operare: Securitatea memoriei
Sisteme de Operare: Securitatea memorieiSisteme de Operare: Securitatea memoriei
Sisteme de Operare: Securitatea memoriei
 
04 html styling
04 html styling04 html styling
04 html styling
 
Matemaika Diskrit - 04 induksi matematik - 03
Matemaika Diskrit - 04 induksi matematik - 03Matemaika Diskrit - 04 induksi matematik - 03
Matemaika Diskrit - 04 induksi matematik - 03
 
作業系統基本觀念複習
作業系統基本觀念複習作業系統基本觀念複習
作業系統基本觀念複習
 
Rust vs C++
Rust vs C++Rust vs C++
Rust vs C++
 
Sisteme de Operare: Memorie virtuala
Sisteme de Operare: Memorie virtualaSisteme de Operare: Memorie virtuala
Sisteme de Operare: Memorie virtuala
 
OPTIMASI.pptx
OPTIMASI.pptxOPTIMASI.pptx
OPTIMASI.pptx
 
如何寫好程式
如何寫好程式如何寫好程式
如何寫好程式
 
rekursi dan relasi rekurens
rekursi dan relasi rekurensrekursi dan relasi rekurens
rekursi dan relasi rekurens
 
Matlab 10
Matlab 10Matlab 10
Matlab 10
 
Korelasi Point Biserial
Korelasi Point BiserialKorelasi Point Biserial
Korelasi Point Biserial
 

Similar to Функциялар

Қайталау операторы
Қайталау операторыҚайталау операторы
Қайталау операторыAssylkhanK
 
Тармақталған алгоритмдерді программалау лабораториялық жұмыc 8
Тармақталған алгоритмдерді  программалау лабораториялық жұмыc 8 Тармақталған алгоритмдерді  программалау лабораториялық жұмыc 8
Тармақталған алгоритмдерді программалау лабораториялық жұмыc 8 Айбек Қуандықұлы
 
Қатарлар
ҚатарларҚатарлар
ҚатарларAssylkhanK
 
ашык сабак жоспары
ашык сабак жоспарыашык сабак жоспары
ашык сабак жоспарыoquzaman
 

Similar to Функциялар (6)

Қайталау операторы
Қайталау операторыҚайталау операторы
Қайталау операторы
 
Тармақталған алгоритмдерді программалау лабораториялық жұмыc 8
Тармақталған алгоритмдерді  программалау лабораториялық жұмыc 8 Тармақталған алгоритмдерді  программалау лабораториялық жұмыc 8
Тармақталған алгоритмдерді программалау лабораториялық жұмыc 8
 
Паскаль тілінде программалау
Паскаль тілінде программалауПаскаль тілінде программалау
Паскаль тілінде программалау
 
Қатарлар
ҚатарларҚатарлар
Қатарлар
 
ашык сабак жоспары
ашык сабак жоспарыашык сабак жоспары
ашык сабак жоспары
 
Тармақталу командалары
Тармақталу командаларыТармақталу командалары
Тармақталу командалары
 

Функциялар

  • 2. Мысалы, 5! = 1 ⋅ 2 ⋅ 3 ⋅ 4 ⋅ 5 = 120 есептеу керек. Факториалды for циклды пайдаланып оңай есептеуге болатыны түсінікті. Бірақ егер программада бірнеше сандар факториалын есептеу керек болса, онда оны бір рет жазып оны әр жерлерге көшіріп жазуға болады, бірақта ол тиімді емес. Сондықтан программалауда функциялар бар. Функция — бұл программаның қалған бөлігінен оқшауланған және шақырылған кезде ғана орындалатын кодтың бөліктері. Мысалы sqrt(), len() және print() функциялары. Олардың барлығы ортақ қасиеттерге тән: олар параметрлерді (нөл, бір немесе бірнеше) қабылдап, мәндерді қайтарады. Мысалы, sqrt() функциясы бір параметрді қабылдайды және мәнді (түбір астындағы санды) қайтарады. Ал print() функциясы айнымалы сандарды қабылдап, ештенені қайтармайды. Енді кез келен санның факториалын есептейтін функцияны жазайық. Factorial() функиясы бір параметрді қабылдайды да, мәнді қайтарады. def factorial(n): res = 1 for i in range(1, n + 1): res *= i return res print(factorial(3)) print(factorial(5)) Функциялар Нәтижесі: 6 120
  • 3. Функциялар 1) Функция коды программаның басында (функцияны қолданар алдында) орналасу керек; 2) Функцияның бірінші жолы түсініктеме ретінде қолданылады (factorial() – идентификатор, яғни функция аты). Идентификатордан кейін дөңгелек жақшада параметрлер тізімі жазылады; 3) Қос нүктеден кейін бос орын қалдырылып функция денесі жазылады. 4) Функция ішінде n факториал есептеліп res айнымалысына жазылады. 5) Функция return res инструкциясы арқылы функцияны аяқтайды да res айнымалысына мәнді қайтарады. 6) Return инструкциясы функцияның кез келген жерінде қолданыла алады, оның орындалуы функция жұмысын тоқтатады. 7) Егер функция мәнді қайтармайтын болса, онда return инструкциясы қайтармайтын мәнсіз қолданылады. 8) Мән қайтармайтын функцияларда return инструкциясын қолданбауға болады.
  • 4. 2 мысал: екі сан қабылдайтын және екеуінің үлкен мәнін қайтаратын max() функциясын жазу. def max(a, b): if a > b: return a else: return b print(max(3, 5)) print(max(5, 3)) print(max(int(input()), int(input()))) 3 мысал: үш сан қабылдайтын және олардың ішінен үлкен мәнді қайтаратын max3() функциясын жазу. def max3(a, b, c): return max(max(a, b), c) print(max3(3, 5, 4)) Функциялар Нәтижесі: 5 5 62 34 62 Нәтижесі: 5
  • 5. Пайтон тілінде аргументтердін айнымаы сандарын қабылдайтын және олардың үлкенін өайтаратын стандартты max() функциясы бар. Программада бұл функция қолдану мысалы: def max(*a): res = a[0] for val in a[1:]: if val > res: res = val return res print(max(3, 5, 4)) Осы функцияға жіберілетін барлық параметрлер, функцияны жариялау жолында белгіленген жұлдызша а атты бір кортежге жиналады. Кортеж (tuple) – бұл өзгермейтін объектілер тізімі. Кортеждер тізімдермен ұқсас болып келеді, бірақ бір ерекшелігі ол – кортеж элементтерін өзгертуге болмайды және оларды тізімдегідей тік жақшаға емес дөңгелек жақшға жазады. Функциялар Нәтижесі: 5
  • 6. Кортеж қарапайым, үтірмен бөлінген элементтерді меншіктеу арқылы құрылады. Немесе оларды жақшаға алып жзуға болады. Мысалы: tup1 =('physics', 'chemistry', 1997, 2000) tup2 =(1, 2, 3, 4, 5) tup3 ="a", "b", "c", "d" Бос кортеж боc жақшалармен көрсетіледі: tup1 =() Бір элементтен тұратын кортжді көрсететін болсақ, онда жазылған элементтен кейін де міндетті түрде үтір қойылады: tup1 =(50,) print (tup1[0]) Функциялар
  • 7. Функцияның сыртында жарияланған, және функция ішінде қол жетімді айнымалылар жаһандық (глобалды) деп аталады. Мысалы: def f(): print(a) a = 1 f() Мұндағы: а айнымалысына 1 мәні меншіктелінеді, және f функция жарияланғанша бұл айнымалы иницалданбаса да f() функциясы осы мәнді баспаға шығарады. f() функцияны шақырғанға деййін айнымалыға мән меншіктеледі, сондықтан f() функциясы оны экранға шығары алады. Жергілікті және жаһандық айнымалылар
  • 8. Функцияның сыртында жарияланған, және функция ішінде қол жетімді айнымалылар жаһандық (глобалды) деп аталады. Мысалы: def f(): print(a) a = 1 f() Мұндағы: а айнымалысына 1 мәні меншіктелінеді, және f функция жарияланғанша бұл айнымалы иницалданбаса да f() функциясы осы мәнді баспаға шығарады. f() функцияны шақырғанға деййін айнымалыға мән меншіктеледі, сондықтан f() функциясы оны экранға шығары алады. Жергілікті және жаһандық айнымалылар
  • 9. Егер айнымалыны функция ішінде жарияласа, онда оны функциядан тыс жерде қолданыла алмайды. Бұндай айнымалыларды жергілікті (локалды) де атайды. Мысалы: def f(): a = 1 f() print(a) Нәтижесінде NameError: name 'a' is not defined қатесін аламыз. Осындай анымалылар функция сыртына шыққанда қол жетпес болады. Егер жаһандық айнымалының мәнін функция ішінде өзгертетсе, онда: 1 және 0 сандары шығарылады. Функция ішінде а мәні өзгерсе де, функция сыртында ол өзгермей қалды. Бұл жаһандық айнымалыларды функция ішінен кез-келген өзгертулерден «сақтау» мақсатында жазылған. Жергілікті және жаһандық айнымалылар def f(): a = 1 print(a) a = 1 f() print(a)
  • 10. Егер функция циклдан і айнымалысы арқылы шақырылса, және де бұл функцияда да циклды ұйымдстыру үшін і айнымалысы қолданылса, онда олар әр түрлі болу керек. def factorial(n): res = 1 for i in range(1, n + 1): res *= i return res for i in range(1, 6): print(i, ' ! = ', factorial(i), sep='') қатесін аламыз. Осындай анымалылар функция сыртына шыққанда қол жетпес болады. Рекурсия Нәтижесі: 1! = 1 2! = 2 3! = 6 4! = 24 5! = 120
  • 11. Функция жаһандық айнымалының мәнін өзгерту үшін, осы айнымалыны функция ішінде жаһандық айнымалы ретінде, global кілттік сөзі көмегімен жариялау керек: def f( ): global a a=1 print(a) a=0 f( ) print(a) Нәтижесі a айнымалысы жаһандық ретінде жарияланған, және оның функция ішіндегі өзгеруі, айнымалының функциядан тыс жерде де қол жетімді болатынына көрсетеді. Ескерту: Жаһандық айнымалыны функция ішінде өзгертпегені жақсы. Жергілікті және жаһандық айнымалылар Нәтижесі: 1 1
  • 12. # Кодтын басында жазылған бөлігін, бір программадан екінші программаға көшіріп жаза беруге болады: def factorial(n): res = 1 for i in range(2, n + 1): res *= i return res n = int(input()) f = factorial(n) print(n, '! = ', f) # әрі қарай f айнымалысымен кез-келген әркеттерді орындауға болады. Жергілікті және жаһандық айнымалылар Нәтижесі: 5! = 120
  • 13. Рекурсия дегеніміз – бұл өзін-өзі шақыратын функция, ал рекурсияны қолданатын функция рекурсивті функция деп аталады. Рекурсия көмегімен n! есептеп көрейік: def factorial(n): if n == 0: return 1 else: return n * factorial(n - 1) print(factorial(5)) Есакерту: Рекурсивті функция құру кезінде рекурсияның аяқталуын міндетті түрде жариялау керек, әйтпесе шексіз функция болуы мүмкін. Шексіздік рекурсивті функцияны жариялаудын екі түрі: 1) Рекурсиядан шығуды дұрыс емес жариялау. Мысалы, егер программада факториалды есептеу кезінде if n == 0 шартын жазбасақ, онда factorial(0) factorial(-1)-ді шақырады, ал factorial(-1) factorial(-2)-ні шақырады және т.с.с. 2) Дұрыс емес параметрлі рекурсивті функцияны шақыру. Мысалы, егер factorial(n) функциясы factorial(n) шақырса, онда тура солай сияқты шексіз функция пайда болады. Рекурсия Нәтижесі: 120
  • 14. Мысалы, Фибоначчидін n-ші санын екі түрімен есептеу. Циклды қолданып n-ші санын есептеу: Алгоритмі: 1. Тізбектін алғашқы екі (fib1 және fib2) мәнін енгізу. 2. Анықталатын элементтін нөмірін енгізу (n) 3. Төмене көрсетілген әрекеттерді екі бірлікке азайтылған (өйткені fib1 және fib2 белгілі) n рет қайталау. 3.1. fib1 және fib2 қосу, және оны үшінші (fib_sum) айнымалыға меншіктеу. 3.2. Алғашқы мәндерін ауыстыру керек: fib1=fib2, ал fib2=fib_sum Рекурсияны қолданып n-ші санын есептеу: Алгоритмі: 1. Егер n=1 немесе n=2, онда шақырылатын тармағына бір бірлікті қайтару (себебі, Фибоначчи тізбегінің бірінші және екінші элементтері бірге тең). 2. Қалған басқа жағдайларды сол функцияны n-1 және n-2 аргументімен қайта шақыру. Екі шақырудың нәтижесін қосып, оны программанын шақырылатын тармаққа қайтару керек.
  • 15. Python тілінде жазылуы: Тексеріс үшін Фибоначчи сандары: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946,… fib1 = 1 fib2 = 1 n = input (“Фибоначчидін қай n-ші санын есептейсіз? ") n = int(n) # бүтір санға түрлендіру i = 2 while i < n: fib_sum = fib2 + fib1 fib1 = fib2 fib2 = fib_sum i += 1 print (fib_sum) def factorial(n): if n == 0: return 1 else: return n * factorial(n - 1) print(factorial(5))