@Vetka_in_code

Как реализовать умножение целочисленных элементов списка в Lisp?

Задание такое: "Задать рекурсивную функцию, вычисляющую произведение целых чисел из списка." , т.е. как я понял, если в списке не целые числа(всякие буквы и левые символы не в счет), то они не идут в счет произведения...

Как бы реализовал это на JS. но этот язык неподъемен... помогите реализовать это задание на lisp'е

function Almost(arr){
    if(arr.length === 0) return 1;
    else if(arr[arr.length - 1] % 1 !== 0){
      arr.splice(arr.length - 1, 1); 
      return Almost(arr);
    }
    else {
        return arr.pop() * Almost(arr);
    }
}
console.log(Almost([1,2,3,1.5,4,5,11.2,6])) // 720, т,е 1,5 - не учитывается
  • Вопрос задан
  • 274 просмотра
Решения вопроса 1
@Vetka_in_code Автор вопроса
(defun len (x)
(cond ((= '0 (list-length x)) '1)
((/= 0 (rem (first x) 1)) (* 1 (len (cdr x))))
(t (* (first x) (len (cdr x))))))
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы