- Функция за намиране на брой възли
- int N(node *el)
- {
- if (el == NULL) return 0;
- else return N(el->L) + N(el->R) + 1;
- }
- Ако имаме дървото:
- 5
- / \
- 4 3
- / \
- 2 1
- 1. Първо, извикваме функцията със стойността на корена. Т.е -> N(5);
- 2. При N(5):
- - el = 5 (не е NULL), затова НЕ връщаме 0
- - връщаме N(el->L) + N(el->R) + 1
- Затова остава:
- return N(4) + N(3) + 1;
- 3. При N(4) + N(3) + 1;
- - разглеждаме само N(4)
- - el = 4 (не е NULL), затова НЕ връщаме 0
- - връщаме N(el->L) + N(el->R) + 1
- - добавяме и останалата част от предишното извикване, която е
N(3) + 1
- Затова остава:
- return N(2) + N(1) + 1 + N(3) + 1;
- 4. При N(2) + N(1) + 1 + N(3) + 1;
- - разглеждаме само N(2)
- - el = 2 (не е NULL), затова НЕ връщаме 0
- - връщаме N(el->L) + N(el->R) + 1
- N(el->L) и N(el->R) са NULL, така че N(2) връща само 1
- - добавяме и останалата част от предишното извикване, която е
N(1) + 1 + N(3) + 1
- Затова остава:
- return 1 + N(1) + 1 + N(3) + 1;
- 5. При 1 + N(1) + 1 + N(3) + 1;
- - разглеждаме само N(1)
- - el = 1 (не е NULL), затова НЕ връщаме 0
- връщаме N(el->L) + N(el->R) + 1
- - N(el->L) и N(el->R) са NULL, така че N(1) връща само 1
- - добавяме и останалата част от предишното извикване, която е
1 + 1 + N(3) + 1
- Затова остава:
- return 1 + 1 + 1 + N(3) + 1;
- 6. При 1 + 1 + 1 + N(3) + 1;
- - разглеждаме само N(3)
- - el = 3 (не е NULL), затова НЕ връщаме 0
- - връщаме N(el->L) + N(el->R) + 1
- N(el->L) и N(el->R) са NULL, така че N(3) връща само 1
- - добавяме и останалата част от предишното извикване, която е
1 + 1 + 1 + 1
- Затова остава:
- return 1 + 1 + 1 + 1 + 1;
- 7. Броят на възлите е 5.
16 януари 2016 г.
Намиране на брой възли в двоично дърво (BST) - в дълбините на рекурсията...
Написах едно обяснение за това как точно работи рекурсията в една проста функция за намиране на брой възли. Нищо особено, просто "вникване на дълбоко" в изпълнението на рекурсията, която може да бъде объркваща понякога...
7 януари 2016 г.
MIND GAMES #4 - Как да спрем да ОТЛАГАМЕ (ефект на Зайгарник)

Когато започнем някаква задача, естествената човешка реакция е да искаме да я завършим. Това се нарича ефект на Зайгарник.
Следователно, за да спрем да отлагаме, просто трябва да ЗАПОЧНЕМ задачата.
Проблемът е, че всеки път когато искаме да започнем, нашият мозък ни залива с мисли като "това ще отнеме прекалено дълго" или "трябва да свърша 1000 неща преди да съм готов".
Решението е просто - трябва да направим само първата стъпка, която е абсурдно лесна.
Трябва да учите за изпит, но нямате желание? Просто отворете учебника.
Трябва да спортувате, но изглежда прекалено трудно? Просто облечете спортните дрехи.
Трябва да станете от леглото, но гравитацията не ви позволява? Просто махнете одеялото.
Схващате идеята. Ако и първата стъпка ви се струва трудна - намерете още по-лесна такава. Просто започнете и наблюдавайте силата на ефекта на Зайгарник.
Изключението на ефекта е, че той губи своята сила, когато не очакваме да се справим със задачата или просто не виждаме смисъл от постигането и.
Например ако задачата ни е да разберем цялото съдържание на учебник или някакъв голям проект, изискващ повече от едно "започване". В такъв случай може да използвате Pomodoro техниката за продуктивност - работете върху задачата за 25 минути и си почивате 5 минути като повтаряте това колкото пъти е нужно. Тази техника е ефективна, защото сега целта ви няма да е "да прочета целия учебник", а вместо това "да издържа 25 минути четене от учебника". А ако се чудите каква ще е първата стъпка на тази задача - просто пуснете таймера!
Ако по-подробно вникнем в ефекта на Зайгарник, има 2 неща, които можем да научим:
- незавършените задачи стоят в паметта ни по-дълго;
- завършените задачи бързо изчезват от паметта.
MIND GAMES #3 - Принцип на контрастта

Ако направите неизгодна оферта на човек и той откаже, а след това му предложите "по-приемлива" сделка (дори и пак да е неизгодна за него), шансът да се съгласи е много по-голям.
Представете си следната ситуация. Отивате в магазин да си купите телевизор. Първото нещо, което виждате, е най-скъпия възможен телевизор, който магазинът предлага. Едва ли ще си купите точно него, защото е прекалено скъп. Но след като сте видели цената на този телевизор, ще сте много по-склонни да приемете цените на другите по-евтини телевизори и ще сте по-склонни да си купите един от тях. Защо? Защото цената им изглежда напълно нормална, имайки предвид тази на най-скъпия.
Мнението ни за всичко се базира на сравнения с други неща. Например когато кажем, че някой е умен, реално казваме, че е умен в сравнение с тези около него.
MIND GAMES #2 - "Длъжник съм ти" (правило за реципрочност)

Когато някой ни направи услуга, ВИНАГИ изпитваме желанието да я върнем по някакъв начин.
Вероятно сте попадали в ситуация, в която ви предлагат нещо “безплатно”, а след като го приемете ви молят за нещо в замяна и вие се чувствате сякаш не можете да откажете. Дори да са минали месеци от тази незначителна услуга, отново ще се чувстваме задължени да я върнем и вероятно ще сме склонни да я върнем със значително по-голяма услуга от наша страна.
Това е силата на правилото за реципрочност.
Повече може да прочете в книгата Influence: The Psychology of Persuasion на Robert B. Cialdini.
MIND GAMES #1 - "Направи ми услуга..."

Йо! Реших да почна да споделям някои интересни психологически трикове, които научих през годините. Някои от тях са доста манипулативни, но в същото време и изключително полезни, а може би дори и информативни (знаейки за тях ще можете и да се предпазите)!
---
Помолете някого за малка услуга. Това увеличава шанса по-късно да са склонни да ви направят дори ПО-ГОЛЯМА услуга, защото започваме да мислим "ако съм помогнал на този човек, значи има причина да го харесвам и следователно трябва да продължавам с това държание".
Абонамент за:
Публикации (Atom)