Показать сообщение отдельно
  #2 (permalink)  
Старый 26.07.2017, 10:34
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

классика
function sum(...args) {
  const [head,...tail] = args
  if (Array.isArray(head)) {
    return sum(...head.concat(tail))
  } else {
    return tail.length > 0
      ? sum(...tail) + Number(head)
      : Number(head)
  }
}


alert(sum(1,2,3,['4',[5,'6',[7]]])) // 28


p.s.: кейсы вида 'one' не обрабатывал

UPD: обновил имена переменных в соответствии с терминологией рекурсивного программирования
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук

Последний раз редактировалось nerv_, 26.07.2017 в 10:42.
Ответить с цитированием