Софтуерно Инженерство
Loading...
+ Нов въпрос
Orhan avatar Orhan 12 Точки

[Homework] Algorithms - Recursion and Recursive Algorithms - Problem {2} - Nested Loops To Recursion

Здравейте,

Написах някакво решения на втората задача, вади ми правилни решения до n=8(поне така си мисля), но не съм сигурен какво ще стане при по-големи числа, ако може някой по-разбиращ да сподели мнението си.
http://pastebin.com/su6qqj0X

Тагове:
2
Структури от данни и алгоритми 29/09/2015 14:23:26
JohnJohnny avatar JohnJohnny 6 Точки

ето го моето решение работи и с големи числа но по-бавно

http://pastebin.com/embed_js.php?i=PdP7yijB

 

2
StaVykoV avatar StaVykoV 169 Точки

JohnJohnny, струва ми се стандартното решение. Според мен си работи правилно и достатъчно бързо. Единствения коментар ми е, че numberOfLoops и numberOfIterations са ти с една и съща стойност през цялото време и няма смисъл и от двете, но това не пречи по никакъв начин на програмата.

0
StaVykoV avatar StaVykoV 169 Точки

Не мога да ти схвана логиката на условията в цикъла. По принцип в задачата се иска n пъти да завъртиш цикъла от 1 до n. Така че можеш да имаш в този for цикъл само викане на рекурсията пак от 1, до n и просто с index +1 и присвояване на стойността на i на даденото поле в масива. Според мен тези проверки които правиш са напълно излишни. Примерно проверката дали  i е по - малко или равно на 0 - излишна е, тъй като ти викаш i oт 1 до n, то така или ианче никога няма да стане 0.

По мои сметки се получава, че понякога цикъла ти не започва от 1 и не би трябвало да ти изкарва верен отговор за примерно n=4. Ако искаш пусни резултата за n=4 примерно за да го видим.  Отговора би трябвало да е всички числа от сорта 1111,1112,1113,1114,1121,1122,1123,1124,1131,....4441,4442,4443,4444, а броя на изкараните резултати общо 4 на 4-та.

Също така, можеш да направиш аrr и n глобални и да викаш финкцията само с index+1 а вътре цикъла няма нужда да започва от startNum тъй като то винаги е еднакво:1. 

 

П.П. Имай предвид, че печатането ти отнема доста време, тъй че ако реално искаш да провериш бързината на алгоритъма си, след като провериш, че вади правилни резултати, закоментирай си принтирането в рекурсията и тогава я пусни с таймер :)

 


Поправи ме ако бъркам, винаги може да пропускам нещо докато гледам кода ти.

1
25/09/2015 02:08:18
Piggov avatar Piggov 27 Точки

Ето и моето - аз съм изоплзвал Stack: линк

1