Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   вопрос по книге ELOQUENT JAVASCRIPT (https://javascript.ru/forum/misc/81582-vopros-po-knige-eloquent-javascript.html)

джоо 18.12.2020 21:48

вопрос по книге ELOQUENT JAVASCRIPT
 
всем привет

начал учить JS по книге ELOQUENT JAVASCRIPT
столкнулся с проблемой, которую не могу понять. выложу код и результат для разбора.

код:

<!doctype html>
<html>
 <head> 
 </head> 
 <body>
  <script>
    function findSolution(target){  
    function find(start,history){
           bconsole.log(start+history);
    
        if(start == target)
        return history;
        
        else if(start > target)
        return null; 
        
        else
       // console.log(start+history);
       
return find(start + 5, "(" + history + "+5)" )  ||  find(start * 3, "[" + history + "*3]");

      }
      
            return find(1,"1");
    }
    
    console.log(findSolution(24));
      </script> 
 </body>
</html>


результат:

11
6(1+5)
11((1+5)+5)
16(((1+5)+5)+5)
21((((1+5)+5)+5)+5)
26(((((1+5)+5)+5)+5)+5)
63[((((1+5)+5)+5)+5)*3]
48[(((1+5)+5)+5)*3]
33[((1+5)+5)*3]
18[(1+5)*3]
23([(1+5)*3]+5)
28(([(1+5)*3]+5)+5)
69[([(1+5)*3]+5)*3]
54[[(1+5)*3]*3]
3[1*3]
8([1*3]+5)
13(([1*3]+5)+5)
18((([1*3]+5)+5)+5)
23(((([1*3]+5)+5)+5)+5)
28((((([1*3]+5)+5)+5)+5)+5)
69[(((([1*3]+5)+5)+5)+5)*3]
54[((([1*3]+5)+5)+5)*3]
39[(([1*3]+5)+5)*3]
24[([1*3]+5)*3]
[([1*3]+5)*3]
Uncaught SyntaxError: Unexpected token '='

до этого: 48[(((1+5)+5)+5)*3] все прекрасно понятно, а вот после не могу понять.
собственно вопрос:
как переменная "start" начинает сокращаться т.е. от значения 63 становится 48. так же сокращаются символы на переменной "history" вроде же они должны были добавляться.

джоо 19.12.2020 11:10

мдяя, понял. вот я тупой, вообще ни туда шёл

рони 19.12.2020 11:32

джоо,
растёт дерево вариантов, на ветках все сочетания вариантов(+5 и *3), ветки выше start больше не дают вариантов(роста), если какая то ветка вырастает до нужной длины рост кроны дерева прекратится и вернётся эта ветка

так как 63 больше 24 , строка 14 то результат null попадёт в строку 20 и эта ветка прекратит рост.
в лог будет отображаться не "сокращение" а совершенно другая ветка.
как-то так...

рони 19.12.2020 11:33

джоо,
Цитата:

Сообщение от джоо
bconsole.log(start+history);


джоо 19.12.2020 19:35

рони,
спасибо, понял все.


Часовой пояс GMT +3, время: 23:24.