Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 15.06.2008, 21:17
A.E.M. вне форума Посмотреть профиль Отправить личное сообщение для A.E.M. Найти все сообщения от A.E.M.
  № 1  
Ответить с цитированием
A.E.M.
 
Аватар для A.E.M.

Регистрация: Jun 2007
Сообщений: 61
Отправить сообщение для A.E.M. с помощью ICQ
Post Не работает рекурсивная функция

В книге Мука предлагают написать рекурсивную функцию для обработки любого количества вложенных массивов внутри массива... Передавать ей два параметра - сам массив и разделитель, который ставить между элементами. (например myFunc(myArray," || ")). Так вот, нужно чтобы, не смотря на то, сколько вложенных массивов в массиве myArray и сколько вложенных массивов внутри вложенных, возвращалась строка с перечислением всех элементов, между элементами должен ставится разделитель " || ".

Вот моя функция, не могу понять почему не работает...

Код:
function vivodMassiv(array, delimiter) {
	var strEnd = "";
	for (i=0; i<array.length; i++) {
		if (array[i] instanceof Array) {
			strEnd += vivodMassiv(array[i], delimiter, 1);
		} else {
			strEnd += array[i]+delimiter;
		}
	}
	return strEnd;
}
__________________
Да будет ФЛЭШ !

Старый 15.06.2008, 21:34
MrPoma вне форума Посмотреть профиль Отправить личное сообщение для MrPoma Посетить домашнюю страницу MrPoma Найти все сообщения от MrPoma
  № 2  
Ответить с цитированием
MrPoma
 
Аватар для MrPoma

Регистрация: Jul 2006
Адрес: Питер
Сообщений: 2,083
Отправить сообщение для MrPoma с помощью Skype™
Код:
function vivodMassiv(array:Array, delimiter:String):String{
	var strEnd:String = '';
	for (var i:Number = 0; i < array.length; i++) {
		if (array[i] instanceof Array) {
			strEnd += vivodMassiv(array[i], delimiter);
		} else {
			strEnd += array[i] + delimiter;
		}
	}
	return strEnd;
}

var s:String = vivodMassiv([0, 1, [2, [3, 4], 5]], '-');
trace(s)
__________________
жж | твттр | гглплс | фсбк | вкнткт | гтхб

Старый 15.06.2008, 22:40
A.E.M. вне форума Посмотреть профиль Отправить личное сообщение для A.E.M. Найти все сообщения от A.E.M.
  № 3  
Ответить с цитированием
A.E.M.
 
Аватар для A.E.M.

Регистрация: Jun 2007
Сообщений: 61
Отправить сообщение для A.E.M. с помощью ICQ
Цитата:
Сообщение от MrPoma Посмотреть сообщение
Код:
function vivodMassiv(array:Array, delimiter:String):String{
	var strEnd:String = '';
	for (var i:Number = 0; i < array.length; i++) {
		if (array[i] instanceof Array) {
			strEnd += vivodMassiv(array[i], delimiter);
		} else {
			strEnd += array[i] + delimiter;
		}
	}
	return strEnd;
}

var s:String = vivodMassiv([0, 1, [2, [3, 4], 5]], '-');
trace(s)
Спасибо Вам огромное! Только вот поясните все же если не сложно... Ведь у меня все так же было написано... дело в том, что не указаны явно типы???
__________________
Да будет ФЛЭШ !

Старый 15.06.2008, 23:25
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 4  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
У вас переменная i была не локальная, поэтому в каждом вызове vivodMassiv цикл начинался не с 0, а продолжал использовать сатрое значение i
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 15.06.2008, 23:49
A.E.M. вне форума Посмотреть профиль Отправить личное сообщение для A.E.M. Найти все сообщения от A.E.M.
  № 5  
Ответить с цитированием
A.E.M.
 
Аватар для A.E.M.

Регистрация: Jun 2007
Сообщений: 61
Отправить сообщение для A.E.M. с помощью ICQ
спасибо!
__________________
Да будет ФЛЭШ !

Создать новую тему Ответ Часовой пояс GMT +4, время: 21:32.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 21:32.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.