Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.09.2018, 13:58
Новичок на форуме
Отправить личное сообщение для ibmpclp Посмотреть профиль Найти все сообщения от ibmpclp
 
Регистрация: 07.09.2018
Сообщений: 4

Значение свойства когда функция поднимается вверх из рекурсии.
День добрый!

Помогите пожалуйста.
Я дохожу по рекурсии до самого глубокого свойства "next" в списке.
Как мне получить значения свойства "value" на выходе из рекурсии, когда функция поднимается вверх?
Чтобы было:
4
3
2
1

let list = {
    value: 1,
    next: {
      value: 2,
      next: {
        value: 3,
        next: {
          value: 4,
          next: null
        }
      }
    }
  };
  
  function printList(list) {
    console.log(list.value);
  
    if (list.next) {
      printList(list.next);
    }
  }
  
  printList(list);
Ответить с цитированием
  #2 (permalink)  
Старый 07.09.2018, 14:05
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,202

Сообщение от ibmpclp
Как мне получить значения свойства "value" на выходе из рекурсии, когда функция поднимается вверх?
Оно?

let list = {
	value: 1,
	next: {
		value: 2,
		next: {
			value: 3,
			next: {
				value: 4,
				next: null
			}
		}
	}
};

function printList(list) {
	console.log(list.value);
	if (list.next) {
		return printList(list.next);
	} else {
		return list.value;
	}
}

alert(printList(list));
Ответить с цитированием
  #3 (permalink)  
Старый 07.09.2018, 14:12
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

ibmpclp,
<script>
let list = {
    value: 1,
    next: {
      value: 2,
      next: {
        value: 3,
        next: {
          value: 4,
          next: null
        }
      }
    }
  };

  function printList(list) {
  var a = [list.value];
    if (list.next) {
      a = printList(list.next).concat(a);
    }
   return a
  }
  var a =  printList(list);
  document.write(JSON.stringify(a, null, 4))
  </script>
Ответить с цитированием
  #4 (permalink)  
Старый 07.09.2018, 14:24
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

рони,
Это просто запоминается путь туда в обратном порядке.
А вот как вернуться по объекту обратно?
Ответить с цитированием
  #5 (permalink)  
Старый 07.09.2018, 14:46
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

Dilettante_Pro,
не понимаю
Ответить с цитированием
  #6 (permalink)  
Старый 07.09.2018, 15:17
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,202

Сообщение от ibmpclp
Чтобы было:
4
3
2
1
Вона че...

let list = {
	value: 1,
	next: {
		value: 2,
		next: {
			value: 3,
			next: {
				value: 4,
				next: null
			}
		}
	}
};

function printList(list) {
	if (list.next) {
		printList(list.next);
	};
	console.log(list.value);
}

printList(list);
Ответить с цитированием
  #7 (permalink)  
Старый 07.09.2018, 15:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

Dilettante_Pro,
это?
let list = {
    value: 1,
    next: {
      value: 2,
      next: {
        value: 3,
        next: {
          value: 4,
          next: null
        }
      }
    }
  };

  function printList(list) {
  var a = list.value;
    if (list.next) {
      printList(list.next);
    }
   alert(a);
   return a
  }
  var a =  printList(list);
Ответить с цитированием
  #8 (permalink)  
Старый 07.09.2018, 15:45
Новичок на форуме
Отправить личное сообщение для ibmpclp Посмотреть профиль Найти все сообщения от ibmpclp
 
Регистрация: 07.09.2018
Сообщений: 4

Да. Оно, чёрт побери.
Спасибо большое. Пока не очень понял как это работает.
Попробую понять.
Ответить с цитированием
  #9 (permalink)  
Старый 07.09.2018, 15:47
Новичок на форуме
Отправить личное сообщение для ibmpclp Посмотреть профиль Найти все сообщения от ibmpclp
 
Регистрация: 07.09.2018
Сообщений: 4

Ребята, всем большое спасибо. Помогли
Чую, не последний раз к Вам обращаюсь.
Ответить с цитированием
  #10 (permalink)  
Старый 07.09.2018, 16:06
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Кривой костыль
<script>
var list = {
    value: 1,
    next: {
      value: 2,
      next: {
        value: 3,
        next: {
          value: 4,
          next: null
        }
      }
    }
  };
  
var vName = "list",
     down = true;
  
  function printList(lst) {
      console.log(lst.value);
  
      if (lst.next && down) {
         vName += ".next";
         printList(lst.next);
       }
       else {
          down = false;
          if(vName.length > 5) {
             vName = vName.substr(0,vName.length - 5);
             printList(eval(vName));
           }
       }
  }
  
  printList(list);
</script>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Узнать значение select, когда их несколько eddin Общие вопросы Javascript 7 01.12.2015 15:35
css.js - fast as a shark. melky Ваши сайты и скрипты 9 26.05.2012 17:40
Функция. ее имя и (). Когда ставить? Когда не ставить? jsuse Общие вопросы Javascript 2 04.11.2011 19:18
Функция меняющая значение input type text. Value не подходит( Sundog Общие вопросы Javascript 1 25.09.2009 15:06
Как узнать значение свойства СSS у элемента? Antt Общие вопросы Javascript 3 16.09.2009 17:39