Иди на:  
търсене   регистрация   чат   помощ   правила   влизане в сайта
Автор Съобщение

Аватар
Регистриран на:
04 Юни 2004 15:50
Мнения: 4407
Местоположение: Taina
Заглавие:
Публикувано на: 30 Сеп 2007 20:48


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


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


Профил ICQ Skype

Аватар
Регистриран на:
09 Авг 2001 13:23
Мнения: 391
Местоположение: София
Заглавие:
Публикувано на: 30 Сеп 2007 20:53


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


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

В 11-ти се учи.


Профил ICQ Skype

Аватар
Регистриран на:
28 Юли 2001 17:23
Мнения: 4390
Местоположение: Sofia
Заглавие:
Публикувано на: 01 Окт 2007 13:28


Понеже никой не обясни за еденичния факториел
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: )

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

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

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

___________________________________
Stop the bats! Stop the bats!
Make them go and not come back!


Профил

Аватар
Регистриран на:
04 Юни 2004 15:50
Мнения: 4407
Местоположение: Taina
Заглавие:
Публикувано на: 01 Окт 2007 13:34


AlShu написа:
Понеже никой не обясни за еденичния факториел
1! = 1
2! = 1 Х 2
3! = 1 Х 2 Х 3
4! = 1 Х 2 Х 3 Х 4

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


Профил ICQ Skype

Аватар
Регистриран на:
29 Май 2004 20:01
Мнения: 529
Местоположение: In my den, staying in the corner Професия: Scientist Интереси: Technologies
Заглавие:
Публикувано на: 01 Окт 2007 14:49


За да го обясня още веднъж, ще дам две формули за членовете на прогресията на Фибоначи - рекурсивна и директна.
Нека първо да обясня какво представлява числова редица, чиито частен случай е прогресията.
Ще направя таблица, в която на първия ред ще напишем числата 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
т.е. сме получили отговора вярно.
Това е и същността на рекурсията – използвайки свойствата на функцията да получим дефинираните предварително стойности.
Надявам се да съм бил полезен, ако нещо не е ясно, питай.

___________________________________




"Най-необяснимото на света е, че той е напълно обясним."
Алберт Айнщайн


Профил ICQ Skype
Покажи мненията от миналия:  Сортирай по  

Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения

Търсене:
 
Иди на:  
cron
© 2009 PC Mania | Реклама | Контакти web by: ilyan.com