Форум программистов, компьютерный форум, киберфорум
CLIPS
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 29.10.2017
Сообщений: 39
1

Напишите функцию, имеющую два аргумента: числовой список и целое число N

09.01.2021, 09:20. Показов 2784. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, имеется задание:

напишите рекурсивную функцию, имеющую два аргумента: числовой
список и целое число N. Функция должна возвращать список, в
котором элементы, стоящие на четных позициях, увеличены в
N раз. Внимание! Циклы, функционалы и функцию присвоения не
использовать!

Вот что я написал и возникла проблема, каким образом я могу передавать
в вызов следующей функции список, в котором индексы сохраняются от предыдущего списка?
То есть первый элемент с индексом 0 - чётный, далее идёт вход в рекурсию со списком на элемент меньше,
но внутри нового вызова это воспринимается как новый список и первый элемент становится снова чётным,
хотя он должен иметь индекс 1 и быть не чётным, и уйти в другую ветку.

Можно сказать, что сейчас программа просто каждое число в списке умножает на N, не зависимо от позиции этого элемента в списке.
Всё время уходит в ветку с умножением на N.

Подскажите, пожалуйста, каким образом можно исправить.

Lisp
1
2
3
4
5
6
(defun mul_N (x N)
  (cond ((null x) nil)
        ((zerop (rem (position (car x) x) 2)) (cons (* (car x) N) (mul_N (cdr x) N)))
        (T (cons (car x) (mul_N (cdr x) N)))
  )
)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.01.2021, 09:20
Ответы с готовыми решениями:

Создать функцию, имеющую два аргумента и возвращающую в качестве аргумента число из отрезка [a,b]
Создать функцию, которая будет иметь два целочисленных параметра a и b, и в качестве своего...

Напишите функцию, принимающую два аргумента, изменяющую значение второго аргумента и возвращающую void
Помогите, пожалуйста:( Напишите функцию add_tax типа void. У нее два формальных параметра:...

Создайте функцию, которая принимает в качестве аргумента целое число и возвращает число Люка с таким номером
1. Создайте функцию, которая принимает в качестве аргумента целое число и возвращает число Люка с...

Напишите функцию, которая для любого целого аргумента возвращает целое значение, полученное изменением порядка следования цифр на обратный
2)Напишите функцию, которая для любого целого аргумента возвращает целое значение, полученное...

2
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,640
Записей в блоге: 13
09.01.2021, 10:33 2
Лучший ответ Сообщение было отмечено Dmitriykul как решение

Решение

Lisp
1
2
3
4
5
6
7
8
(defun task (list n &optional (p 0))
  (cond ((null list) nil)
        ((evenp p) (cons (* n (car list)) (task (cdr list) n (+ p 1))))
        (t (cons (car list) (task (cdr list) n (+ p 1))))))
 
(task '(1 2 3 4 5 6) 7)
 
==> (7 2 21 4 35 6)
1
0 / 0 / 0
Регистрация: 29.10.2017
Сообщений: 39
09.01.2021, 12:09  [ТС] 3
Catstail, Спасибо большое
0
09.01.2021, 12:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.01.2021, 12:09
Помогаю со студенческими работами здесь

Напишите функцию max, что принимает два аргумента, и возвращает максимальный из них.
Напишите функцию max, что принимает два аргумента, и возвращает максимальный из них (не используйте...

Напишите функцию, получающую целое число
14. Напишите функцию, получающую целое число N (> 0). Если оно является степенью числа 3, то...

Напишите функцию которая принимает целое беззнаковое число и возвращает true, если число четное и false
2. Напишите функцию которая принимает целое беззнаковое число и возвращает true, если число четное...

Написать функцию, которая принимает в качестве аргумента целое число по ссылке, и увеличивает его на единицу
Dev C++

Создайте логическую функцию, которая принимает в качестве аргумента целое число и проверяет, является ли оно простым
3. Создайте логическую функцию, которая принимает в качестве аргумента целое число и проверяет,...

Создайте логическую функцию, которая принимает в качестве аргумента целое число и проверяет, является ли оно простым.
Создайте логическую функцию, которая принимает в качестве аргумента целое число и проверяет,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru