> 1 <

Автор Сообщение

Postsciptum

Members


Статус

2 сообщений

Где: Russia
Род занятий:
Возраст:

#5265   2011-12-07 10:09 GMT+3 часа(ов)      
Помогите в решении 3 заданий
1. Определите функцию (f a n), которая от двух числовых аргументов вычисляет величину a+a*(a+1)+a*(a+1)*(a+2)+...+a*(a+1)*...*(a+n).
2. Определите функцию (f s), которая вычисляет список (m1 m2 m3), состоящий из трех наибольших элементов списка s: m1>=m2>=m3.
3. Определите функцию (f s n), которая из списка чисел s создает новый список, прибавляя к каждому атому число n. Исходный список не предполагается одноуровневым.
Первые 2 задания на Паскале сделал бы легко, а вот с Лиспом проблемы

megamanx

Members


Статус

307 сообщений

Где: Russia
Род занятий:
Возраст:

#5270   2011-12-07 19:35 GMT+3 часа(ов)      
(defun f (a n &optional (m 0) (old a) (res 0))
(if (> m n) res
(f a n (1+ m) (* old (+ a m 1)) (+ res old))))
 
(defun f2 (L)
(subseq (sort L #'>) 0 3))
 
(defun f3(s n)
(cond
((null s) nil)
((atom (car s))
(if (numberp (car s))
(cons (+ (car s) n) (f3 (cdr s) n))))
(T (cons (f3 (car s) n) (f3 (cdr s) n)))))
I wish I'd made you angry earlier

Postsciptum

Members


Статус

2 сообщений

Где: Russia
Род занятий:
Возраст:

#5276   2011-12-08 08:43 GMT+3 часа(ов)      
megamanx, спасибо. Только я не понял - функция f3 - это, как я понял, 3 задание, а f и f2 - это что?

megamanx

Members


Статус

307 сообщений

Где: Russia
Род занятий:
Возраст:

#5277   2011-12-08 17:50 GMT+3 часа(ов)      
по аналогии. f - первое, f2 - второе.
I wish I'd made you angry earlier
> 1 <


Онлайн :

0 пользователь(ей), 46 гость(ей) :