Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (JS) Возвращается ли рекурсия к своим предыдущим вызовам? / 6 сообщений из 6, страница 1 из 1
02.11.2005, 17:53
    #33358458
Berkut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Возвращается ли рекурсия к своим предыдущим вызовам?
Требуется определить в дереве путь к потомкам от данного узла.
В моем примере, возможно не самом удачном, рекурсивная функция test() доходит до первого "листа" и все. Как такое можно пофиксить?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
<HTML>
<HEAD>
<SCRIPT language="JavaScript">

var tree = new Array();

tree[ 0 ] =  0 ;
tree[ 1 ] =  0 ;
tree[ 2 ] =  1 ;
tree[ 3 ] =  2 ;
tree[ 4 ] =  2 ;
tree[ 5 ] =  1 ;

var str = '';

// рекурсивно формирует путь по узлам
function test(j)
{
    for(i= 0 ; i<tree.length; i++)
    {
        if (tree[i]==j)
        {
            str+= i + ' => ';
            test(i);
        }
    }

    return str;
}

// выводит путь для данного узла
function fill_div(j)
{
    document.all.nodes.innerHTML = test(j);
}
</SCRIPT>
</HEAD>
<BODY>
<BUTTON type="button" onClick="fill_div(1)">Test</button><br><br>
<div id="nodes" style="padding:10px; width:30%; height:10%; border: 1px solid #a6a6a6">
<small>Требуется рекурсивно определить потомков узла <b> 1 </b>. Правильный ответ -  2  =>  3  =>  4  =>  5 </small>
</div>
<br>
<div style="padding:10px; width:30%; height:10%; border: 1px solid #a6a6a6">
<pre>
Корень
|
--- 1
    |
    ---2
    |  |
    |  ---3
    |  |
    |  ---4
    |
    ---5
</pre>

<small>Отношения родитель-потомок определяются в массиве следующим образом:</small><br>
<p style="font-family: fixedsys; font-size:12px; padding:10px; background-color: #E0EFFD">
tree[ 0 ] =  0 ;<br>
tree[ 1 ] =  0 ;<br>
tree[ 2 ] =  1 ;<br>
tree[ 3 ] =  2 ;<br>
tree[ 4 ] =  2 ;<br>
tree[ 5 ] =  1 ;
</p>
</div>
</BODY>
</HTML>
...
Рейтинг: 0 / 0
03.11.2005, 12:33
    #33359827
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Возвращается ли рекурсия к своим предыдущим вызовам?
прикольный баг.
В функции test следует определить локальную переменную i
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
03.11.2005, 12:44
    #33359863
Berkut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Возвращается ли рекурсия к своим предыдущим вызовам?
>прикольный баг.
да уж, ничего прикольного :)

>В функции test следует определить локальную переменную i
объявление переменной как
Код: plaintext
1.
var i;
ни к чему не превело.
...
Рейтинг: 0 / 0
03.11.2005, 13:33
    #33360004
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Возвращается ли рекурсия к своим предыдущим вызовам?
у меня корректно работает. var i;
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
03.11.2005, 13:36
    #33360014
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Возвращается ли рекурсия к своим предыдущим вызовам?
Чтобы не мучаться багами из-за области видимости, переменные следует объявлять явно.
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
03.11.2005, 14:26
    #33360203
Berkut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Возвращается ли рекурсия к своим предыдущим вызовам?
2 maXmo

Спасибо, вылечил с помощью var i. Видимо страница подгружалась из кэша.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (JS) Возвращается ли рекурсия к своим предыдущим вызовам? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]