Страница 2 от 2

Публикувано на: 30 Сеп 2007 20:48
от wannabe
Аз написа:
THE KING OF TIME написа:Учи ли се въобще в училище такова нещо. То тва не е за нормални хора ебаси.


Учихме го в 10 клас и нищо не схванах :D
Рекурсия не се учи в 10ти,иначе щях да си спомням :roll:

Публикувано на: 30 Сеп 2007 20:53
от SneakyDude
Jorix написа:
Аз написа:
THE KING OF TIME написа:Учи ли се въобще в училище такова нещо. То тва не е за нормални хора ебаси.


Учихме го в 10 клас и нищо не схванах :D
Рекурсия не се учи в 10ти,иначе щях да си спомням :roll:

В 11-ти се учи.

Публикувано на: 01 Окт 2007 13:28
от AlShu
Понеже никой не обясни за еденичния факториел
1! = 1
2! = 1 Х 2
3! = 1 Х 2 Х 3
4! = 1 Х 2 Х 3 Х 4

Накратко - съкратен начин да запишеш умножението на 1 по 2 по 3 по ... до N.

За рекурсията - както беше описано по-горе рекурсивна е тази функция, която сама вика себе си...
Може от пръв поглед да не личи, но рекурсията е много мощно средство - с нея много лесно се пишат алгоритмни за обхождане на графи (разбирай лабиринти, обхождане на шахматна дъска с определена фигура и т.н.) при това с така наречения бектрекинг (т.е. тръгва да обхожда, стига до здънена улица, връща се не предишната пресечка, пробва нова посока, стига до задънена улица, пак се връща...и така докато намери път или всички пътища или най-късия от тях примерно...).

Смятането на факториел с рекурсивна функция, не е кой знае какво, но демонстрира как да се използва рекурсията (но не демонстрира пълната и мощ).

Хайде да напишем фунция за N!

Основите елементи на рекурсивната функция са: 1-во трябва да и кажеш какво да прави в еденичния случай (при нас ако N = 1 и функцията е 1) 2-ро да определиш каква е функцията, ако вече имаме изчислена функцията за N-1 стъпки (при нас Ф(N) = Ф (N-1) Х N).

Ето как изглежда рекурсивна функция за изчисляване на N!

функция Ф1(статичен параметър N)

Ако N = 1 тогава Ф1 = 1
иначе Ф1 = Ф1(N-1) * N


Ако извикаме примерно Ф1(4) ще ни върне 24 (т.е. ако попълним цяло число ще смята факториел от него...ако не е цяло ще зацикли и ще изчерпа маметта :lol: )

В някои езици нещата ще изглеждат различно.

Обратния (т.е. нормалния ) начин за решаване на такива задачи (примерно с цикъл), се нарича итеративен.

Накратко - щом аз съм го разбрал, значи е нещо елементарно...

Публикувано на: 01 Окт 2007 13:34
от wannabe
AlShu написа:Понеже никой не обясни за еденичния факториел
1! = 1
2! = 1 Х 2
3! = 1 Х 2 Х 3
4! = 1 Х 2 Х 3 Х 4

Накратко - съкратен начин да запишеш умножението на 1 по 2 по 3 по ... до N.
Ми аз мисля че го обясних,ама никои не ми обръща внимание :roll:

Публикувано на: 01 Окт 2007 14:49
от Gnumerick
За да го обясня още веднъж, ще дам две формули за членовете на прогресията на Фибоначи - рекурсивна и директна.
Нека първо да обясня какво представлява числова редица, чиито частен случай е прогресията.
Ще направя таблица, в която на първия ред ще напишем числата 1, 2, 3 и т.н., а на втория – числата от прогресията на Фибоначи. За да е дефинирана една числова редица, трябва да има правило (алгоритъм), чрез който от числото 1 да се получи първия член от редицата, от числото 2 – втория член, и т.н., от числото n да се получи n-ия член на редицата.
Изображение
Както виждаш, разбихме на стъпки стойностите, докато получим излаз, в който участват само F(1) и F(2). Защо ли? Защото преди малко казахме, че тези две стойности са дефинирани, като в тази случай са равни на 1. Така получаваме:
F(6)=1+1+1+1+1+1+1+1
F(6)=8
т.е. сме получили отговора вярно.
Това е и същността на рекурсията – използвайки свойствата на функцията да получим дефинираните предварително стойности.
Надявам се да съм бил полезен, ако нещо не е ясно, питай.