Loading...
drashoo avatar drashoo 14 Точки

[Technical Issue] JavaScript - Помощ за рекурсия

Да се състави програма, при която предварително са въведени естествени числа в двумерен масив 4*4 елемента. Програмата да извежда резултат от проверката на най-голямата сума по редове спрямо най-голямата сума по колони. Използвайте рекурсия.

Проблема е че ми връща undefine. 

 

И моето решение е : http://pastebin.com/ntJSV5CD

Моля, прочетете правилата на форума преди да пускате нова тема.


 

0
JavaScript Fundamentals 17/04/2015 10:01:19
Filkolev avatar Filkolev 4482 Точки
Best Answer

Трябва да добавиш просто по един return на редовете, където викаш рекурсивно функцията. Ето код.

Друга препоръка - .map() функцията има друга цел, тя е да създаде нов масив и в случая това, което искаш да постигнеш, се явява страничен ефект. По-добре ползвай един forEach() и вътре в него пълни сумата.

Edit: По принцип нямаш нужда от променливите, които ти пазят сумите, нито от тези за реда и колоната. Вместо да ги декларираш в началото на основната функция, може да ги предаваш като параметри на рекурсивните функции, като при първото извикване подаваш нули, а на всяко следващо подаваш текущата най-голяма сума и инкрементираш реда/колоната. Ето какво имам предвид: ЛИНК

1
16/04/2015 23:02:39
enevlogiev avatar enevlogiev 1168 Точки

Мисля, че като стигнеш дъното и върнеш някоя от двете суми, първоначално всичко е окей, но след това в стака има натрупани още 3 call-a, които не връщат нищо и съответно са undefined. Т.е. като параметър в console.log() първоначално имаш 58, но тепърва има да го затрупат още 3 undefined-a.  За твое щастие стойностите са записани в maxRow и maxCol.
И въпреки, че е грозно, по ей този начин нещата се оправят -> http://pastebin.com/jWEYuF0K

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.