Показать сообщение отдельно
Старый 02.05.2007, 13:21
chingachgoog вне форума Посмотреть профиль Найти все сообщения от chingachgoog
  № 3  
Ответить с цитированием
chingachgoog
Banned
 
Аватар для chingachgoog

блогер
Регистрация: Nov 2006
Адрес: Moscow
Сообщений: 2,145
Записей в блоге: 7
Что тут непонятного?
В рекурсивной функции стоит увеличитель счетчика zz
перед вызовом функции он сбрасывается на ноль, после вызова выводиться в output.

Причем тот же код в классике с факториалом явно не позволяет делать рекурсию длиннее 256 вызовов!
Код:
function factorial(n) {
	zz++
if (n == 0) {
return 1;
} else {
return n*factorial(n-1);
}
}
zz=0
trace(factorial(255)); 
trace(zz)
У меня же рекурсия ищет с нужной точки мувик с уникальным именем.
И выходит что делает она это иногда даже 303 раза!
Код:
f_find=function(fName, fPath){ // Рекурсия 
	zz++
	for (i in fPath) {
		if (fPath[i]._name==fName) {
			f_N= fPath[i]
			return f_N
		} else {
			f_find(fName, fPath[i])
		}
	}
	return f_N	
}
Где fName - имя искомого мувика, например "myMovie", fPath- путь с которого начинается поиск, например _root.mc1.mc2, а f_N - путь к найденному мувику.

Причем если расширить зону поиска, т.е. в начальную точку поска вбить не _root.mc1.mc2, а скажем _root.mc1 или просто _root, то предупреждение о переполнении стека в 256 все же следует!


Последний раз редактировалось chingachgoog; 02.05.2007 в 13:56.