Лекц 10: (Рекурс)

20
Алгоритм програмчлал Лекц 10: Рекурс Багш: М.Цэцэнцэнгэл

Upload: -

Post on 22-Jul-2015

161 views

Category:

Education


8 download

TRANSCRIPT

Page 1: Лекц 10: (Рекурс)

Алгоритм програмчлалЛекц 10: Рекурс

Багш: М.Цэцэнцэнгэл

Page 2: Лекц 10: (Рекурс)
Page 3: Лекц 10: (Рекурс)
Page 4: Лекц 10: (Рекурс)
Page 5: Лекц 10: (Рекурс)

Рекурс

● Өөрөө өөрийгөө давтах үзэгдлийг хэлнэ.● Математик, компьютерын ухаанд түгээмэл

хэрэглэгддэг.

Page 6: Лекц 10: (Рекурс)

Болор толь дахь рекурс

Page 7: Лекц 10: (Рекурс)

Болор толь дахь рекурс

Page 8: Лекц 10: (Рекурс)

Компьютерын ухааны рекурс

● Тухайн бодлогыг бодохдоо өөртэй нь яг адилхан жижиг бодлогуудын хариунуудаар боддог аргыг хэлнэ.

● Ихэнх програмчлалын хэлүүд функцээр рекурсыг хэрэгжүүлдэг.

Page 9: Лекц 10: (Рекурс)

Рекурс

Өөрөө өөрийгөө дууддаг функц байдлаар рекурсийг хэрэгжүүлнэ.

Page 10: Лекц 10: (Рекурс)

Фибоначийн цуваа

● Цувааны эхний хоёр гишүү нь 0, 1 байдаг● Цувааны гишүүн нь өмнөх хоёр гишүүний

нийлбэртэй тэнцүү байдаг.

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89...

Page 11: Лекц 10: (Рекурс)

Леонардо Боначчи

● Италийн математикч (1170-1250)

● Филиус Боначчи => Фибоначчи

● Энэтхэгт зохиогдсон энэ цувааг Европт дэлгэрүүлжээ.

Page 12: Лекц 10: (Рекурс)

Фибоначийн цуваа

F(1) = 0F(2) = 1F(3) = F(2) + F(1) = 0 + 1 = 1F(4) = F(3) + F(2) = 1 + 1 = 2F(5) = F(4) + F(3) = 2 + 1 = 3F(6) = F(5) + F(4) = 3 + 2 = 5F(n) = F(n-1) + F(n-2)

Page 13: Лекц 10: (Рекурс)

Фибоначчийн цуваа

Фибоначчийн цувааны 4 дэх гишүүнийг олъё.

Page 14: Лекц 10: (Рекурс)

4 дэх гишүүнийг олохдоо

Page 15: Лекц 10: (Рекурс)

Санамж

● Рекурс заавал рекурсээс гарах нөхцөлтэй байх ёстой.

● Өөрөөр хэлбэл төгсгөлгүй рекурс байж болохгүй.

● Хэрэв төгсгөлгүй рекурс байвал Си хэлэнд “stack overflow” гэдэг алдааг өгнө.

Page 16: Лекц 10: (Рекурс)

Си хэлэнд

int fib(int n) {if(n == 1) return 0;if(n == 2) return 1;return fib(n-1) + fib(n-2);

}

Page 17: Лекц 10: (Рекурс)

Бодлого: Факториал

0! = 11! = 12! = 1 * 2 = 1! * 23! = 1 * 2 * 3 = 2! * 34! = 3! * 4n! = (n - 1)! * n

Page 18: Лекц 10: (Рекурс)

Бодлого: Факториал

fac(0) = 1fac(1) = fac(0) * 1 = 1fac(2) = fac(1) * 2 = 2fac(3) = fac(2) * 3 = 6fac(4) = fac(3) * 4 = 24fac(n) = fac(n-1) * n

Page 19: Лекц 10: (Рекурс)

Си хэлэнд

int fac(int n) {

if(n == 0 || n == 1) return 1;

return fac(n-1) * n;}

Page 20: Лекц 10: (Рекурс)

Бодлого

n хүртэлх натурал тоонуудын нийлбэрийг ол.

S(1) = 1S(2) = S(1) + 2 = 1 + 2 = 3S(3) = S(2) + 3 = 3 + 3 = 6S(n) = S(n-1) + n