> 1 <

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

yarus88

Members


Статус

4 сообщений

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

#362   2009-05-16 17:49 GMT+3 часа(ов)      
Есть список атомов. Написать программу, возвращающую список вида: первый элемент - атом исходного списка, появляющийся в списке один раз, второй элемент - атом, появляющийся два раз и т.д. Если есть несколько атомов, появляющихся одинаковое количество раз, то их объединить в один список.

Решить задачу 2 способами:
1) без использования функций присваивания и циклов
2) без использования рекурсии.

Даже не представляю как это делать((((((((((

AlliasToBe

Members


Статус

7 сообщений

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

#386   2009-05-30 20:48 GMT+3 часа(ов)      
Вот с использованием рекурсии и локальной переменной. Эта функция находит количество вхождений атома в одноуровневый список:

(define (NAtomInList Lst Atm)
(degine item 0)
(if (null? (cdr lst))
(if (eq? (car lst) atm) (+ item 1)
(if (eq? (car lst) atm) (+ item (NAtomInList (cdr Lst) Atm))
)
item
)

К сожалению я сейчас не могу её проверить сейчас, но идея тут понятная.
(То что я не могу создать, я не могу понять (Р) (Фейнман))
> 1 <


Онлайн :

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




Реклама на сайте: