Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/114: Рейтинг темы: голосов - 114, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 11.02.2016
Сообщений: 17
1

Рекурсивный обход массива

07.11.2016, 19:18. Показов 20773. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Необходимо написать функцию, которая должна рекурсивно выводить элементы массива на экран. Нельзя использовать циклы и методы для работы с массивами. Функция может принимать максимум 2 аргумента.
consoleRec(['а', 'b', 'c', 'd', 'f']);

должна вывести на экран:
a
b
d
f
Вроде, понимаю, что такое рекурсия, но как обойти массив без циклов рекурсивно, не знаю
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.11.2016, 19:18
Ответы с готовыми решениями:

Рекурсивный обход элементов
Нужно обойти все элементы динамического дива и проверить у каждого элемента value, сложность в том...

Рекурсивный обход элементов страницы
Не могу понять почему программа не выводит имена тегов корректно. получается что-то такое: ( (...

Рекурсивный обход двумерного массива
Здравствуйте! Не могу составить алгоритм рекурсивного обхода двумерного массива. Например есть...

Рекурсивный обход. Не могу сделать табуляцию. Обход с выводом имен файлов
Задание простое, ну по крайней мере на первый взгляд. Написать скрипт обхода вложенных директорий с...

7
Эксперт JS
2454 / 1761 / 624
Регистрация: 11.07.2016
Сообщений: 4,051
07.11.2016, 19:55 2
Javascript
1
2
3
4
5
6
7
8
9
10
var arr = ['a', 'b', 'c', 'd', 'f'];
var i = 0;
 
function consoleRec(arr) {
   console.log(arr[i]);
   i++;
   if (i < arr.length) consoleRec(arr);
}
 
consoleRec(arr);
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,625
07.11.2016, 20:12 3
Лучший ответ Сообщение было отмечено junior22 как решение

Решение

и вариант без использования глобальных переменных
Javascript
1
2
3
4
5
6
function consoleRec (arr, n)
   {
   document.write (arr [n++] + '<br>');
   if  (n < arr.length) consoleRec (arr, n);
   }
consoleRec (['а', 'b', 'c', 'd', 'f'], 0);
0
1 / 0 / 1
Регистрация: 03.09.2020
Сообщений: 10
17.09.2020, 09:37 4
Добрый день.

добавил
Javascript
1
var x=arr.reverse();
А можно вывести это все в обратном просто начиная считать с конца без этого метода?

Добавлено через 14 минут
Цитата Сообщение от Alexey_Diesel Посмотреть сообщение
Добрый день.

добавил
Javascript
1
var x=arr.reverse();
А можно вывести это все в обратном просто начиная считать с конца без этого метода?
Javascript
1
 console.log(myNum.reverse()[i]);
Так по сути тоже самое, но хочется еще вариантов без метода... если это возможно.
0
Эксперт JS
2454 / 1761 / 624
Регистрация: 11.07.2016
Сообщений: 4,051
17.09.2020, 09:43 5
Alexey_Diesel, вам нужно просто вывести элементы массива в обратном направлении? При чём тут рекурсия тогда?
Javascript
1
2
const arr = ['a', 'b', 'c', 'd', 'e'];
for (let i = arr.length - 1; i >= 0; i--) console.log(arr[i]);
1
1 / 0 / 1
Регистрация: 03.09.2020
Сообщений: 10
17.09.2020, 09:55 6
Цитата Сообщение от Balanaar Посмотреть сообщение
Alexey_Diesel, вам нужно просто вывести элементы массива в обратном направлении? При чём тут рекурсия тогда?
Javascript
1
2
const arr = ['a', 'b', 'c', 'd', 'e'];
for (let i = arr.length - 1; i >= 0; i--) console.log(arr[i]);
Вывести без использования цикла.

Такое

Javascript
1
2
3
4
5
6
function consoleRec (arr, n)
   {
   document.write (arr [n++] + '<br>');
   if  (n < arr.length) consoleRec (arr, n);
   }
consoleRec (['а', 'b', 'c', 'd', 'f'], 0);
Но чтоб было в обратном порядке в консоле.

f
d
c
b
a

Добавлено через 8 минут
Запутался не много.

сделал так:

Javascript
1
2
3
4
5
6
7
8
9
10
var myNum = [2, 4, 6, 8, 10];
      console.log(myNum);
      var x = myNum.reverse();
      var i = 0;
      function recursFunc(x) {
        console.log(x[i]);
        i++;
        if (i < x.length) recursFunc(x);
      }
      recursFunc(x);
Вопрос: Возможно ли вывести массив в обратном порядке не используя var x = myNum.reverse(); ?
0
Эксперт JS
2454 / 1761 / 624
Регистрация: 11.07.2016
Сообщений: 4,051
17.09.2020, 10:03 7
Лучший ответ Сообщение было отмечено gogolik как решение

Решение

Javascript
1
2
3
4
5
6
function consoleRec(arr, n) {
  if (n === undefined) n = arr.length - 1;
  console.log(arr[n--]);
  if (n >= 0) consoleRec(arr, n);
}
consoleRec(['а', 'b', 'c', 'd', 'f']);
1
1 / 0 / 1
Регистрация: 03.09.2020
Сообщений: 10
17.09.2020, 10:17 8
Цитата Сообщение от Balanaar Посмотреть сообщение
Javascript
1
2
3
4
5
6
function consoleRec(arr, n) {
  if (n === undefined) n = arr.length - 1;
  console.log(arr[n--]);
  if (n >= 0) consoleRec(arr, n);
}
consoleRec(['а', 'b', 'c', 'd', 'f']);
Спасибо огромное!
0
17.09.2020, 10:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.09.2020, 10:17
Помогаю со студенческими работами здесь

Рекурсивный обход дерева
Помогите пожалуйста решить задачу, про методы расширения прочитал..Тут нужно использовать свойство...

Рекурсивный обход каталога
Здравствуйте. Стоит следующая задача. Необходимо выполнить рекурсивный обход директорий находящихся...

рекурсивный обход и удаление
в checkedlistbox вывел все папки и файлы.как удалить все выбранные файлы и папки(вместе с...

Рекурсивный обход дерева
Добрый вечер! Не получается доделать рекурсивный обход дерева.(PHP недавно начал осваивать...) Не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru