Рекурслэг тодорхойлогдсон функцФункцийг тодорхойлох нэг арга нь f : N S ( дурын S олонлог ) эсвэл a n = f ( n ) цуваа нь : f (0) тодорхойлно . n >0, f ( n ) – ийг f (0),…, f ( n −1) хэлбрээр тодорхойлно . Ж.н . : a n :≡ 2 n цувааг рекурслэг тодрхойлохдоо : a 0 :≡ 1 гэвэл . n >0, a n :≡ 2 a n -1 гэнэ.
5.
Фибоначийн цуваа Fibonacci цуваа нь f n ≥0 тодорхойлох түгээмэл арга юм : f 0 :≡ 0, f 1 :≡ 1, f n ≥2 :≡ f n −1 + f n −2 Leonardo Fibonacci 1170-1250 0 1 1 2 3 5 8 13
6.
Рекурс тодорхойлоход батлахшинж чанарууд Теорем : f n < 2 n . Баталгаа : индукцээр . Үндсэн хэсэг : f 0 = 0 < 2 0 = 1 f 1 = 1 < 2 1 = 2 Инд алхам : гүн индукцээр . k < n , f k < 2 k гэж авч үзвэл. f n = f n −1 + f n −2 бол < 2 n −1 + 2 n −2 < 2 n −1 + 2 n −1 = 2 n . ■ Рекурс баталгааны үндсэн хэсгийг ашигласан . Шууд бусаар бүх n N
7.
Рекурслэг тодорхойлогдсон олонлогТөгсгөлөг олонлог S нь рекурслэг байдлаар өгөгдсөн бол : Жижиг төгсгөлөг олонлогын үндсэн элемент S . Дүрэм шинэ элементийг өмнө нь тодорхойлсон S – ээс байгуулах. Шууд бусаар , S нь өөр элементүүд байна гэхдээ дээрх элемент биш. Жишээ : 3 S гэе , мөн x + y S ба хэрэв x , y S бол . S юу вэ ?
Рекурс тодорхойлох асуудалРекурсыг тодорхойлоход олон асуудал тулгардаг : Жишээ : n факториал 1 if n = 0 n != ( рекурс шийдэл ) ( n -1)!* n if n > 0 1 if n = 0 n != ( шийдлийг дуусгах ) 1*2*3*…*( n -1)* n if n > 0
10.
Факториал функцийн кодРекурс хэрэгжилт int Factorial(int n) { if (n==0) // үндсэн хэсэг return 1; else return n * Factorial(n-1); }
11.
12.
Өөр жишээ : n –ээс k –г сонгох ( комбинаци ) n зүйл өгөгдсөн ба к хэмжээгээр сонгож авах хичнээн өөр олонлог байх вэ ? n n-1 n-1 = + , 1 < k < n ( рекурс шийдэл ) k k k-1 n n! = , 1 < k < n ( дуусгах хэлбэр ) k k!(n-k)! үндсэн хэсэг : n n = n (k = 1), = 1 (k = n) 1 n
13.
n –ээс k –г сонгох ( комбинаци ) int Combinations(int n, int k) { if(k == 1) // үндсэн хэсэг 1 return n; else if (n == k) // үндсэн хэсэг 2 return 1; else return(Combinations(n-1, k) + Combinations(n-1, k-1)); }
a n Рекурсээр тооцоолох Зарим зүйлын алгоритм зөн совингоороо олон удаа давтагддаг эдгээрийг ч бас рекурсээр илэрхийлж болно. процедур power ( a≠ 0: real, n N ) if n = 0 then return 1 else return a · power ( a , n −1)
18.
Шугаман рекурс хайлтЖишээ procedure search ( i, j, x ) if =x then location:= i else if i=j then location:=0 else search ( i+1, j, x ) .... i j