Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
11 / 11 / 3
Регистрация: 06.08.2011
Сообщений: 208
1

Рекурсия: умножение целых чисел через сложение и вычитание

11.11.2013, 17:47. Показов 2276. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день.
Помогите дописать программку.
Задание: Определите умножение целых чисел через сложение и вычитание.
Решение:
Делаем рекурсию по второму аргументу предиката, используя рекурсивное определение X*Y=X*(Y-1)+X.
Как реализовать это на лиспе?
Lisp
1
2
3
4
(defun su(x y)                                                              
         (if (< y 0) 0                                                             
             (- y 1))                                                              
               su(x y))
Спасибо
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.11.2013, 17:47
Ответы с готовыми решениями:

Определите умножение целых чисел (*2 x y) через сложение и вычитание
3. Определите умножение целых чисел (*2 x y) через сложение и вычитание.

Умножение через сложение и вычитание
Можно ли на примере данного кода произвести умножение через сложение и вычитание? (defun umn (x y)...

Сложение, вычитание, умножение и деление целых чисел
Написала программу, но выводит что-то очень странное. Не очень понятный для меня язык. Подскажите,...

Сложение, вычитание и умножение матриц целых чисел
Разработать проект, который обеспечивает выполнение операций сложения, вычитания и умножения над...

2
493 / 426 / 56
Регистрация: 29.04.2011
Сообщений: 443
11.11.2013, 18:31 2
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(defun F (x y)
    (cond
        ((zerop y) 0)
        ((equal y 1) x)
        (t (+ x (F x (- y 1))))))
 
(F 4 9)
==> 36
 
(F -4 9)
==> -36
 
(F 4 0)
==> 0
1
Модератор
Эксперт функциональных языков программированияЭксперт Python
36606 / 20334 / 4221
Регистрация: 12.02.2012
Сообщений: 33,652
Записей в блоге: 13
11.11.2013, 20:31 3
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от Ирина197708 Посмотреть сообщение
Делаем рекурсию по второму аргументу предиката,
- одни и те же задачи... Одни и те же ошибки... Предикат - это логическая функция (т.е. возвращающая значения T или NIL). При чем здесь умножение?

route66, в коде есть небрежность:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
(defun F (x y)
    (cond
        ((zerop y) 0)
        ((equal y 1) x)
        (t (+ x (F x (- y 1))))))
 
==> f
 
(f 3 4) 
 
==> 12 ;; верно
 
(f -3 4)
 
==> -12 ;; верно
 
(f 3 -4)
 
EVAL: Превышение допустимой глубины рекурсии 
==> ERRSTATE
Корректнее так:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
(defun mult (x y)
  (cond ((zerop x) 0)
        ((zerop y) 0)
        ((< x 0) (- (mult (- x) y)))
        ((< y 0) (- (mult x (- y))))
        ((= x 1) y)
        (t (+ y (mult (- x 1) y)))))
 
==> mult
 
(mult 6 -7)
 
==> -42
 
(mult -6 -7)
 
==> 42
 
(mult -6 7)
 
==> -42
3
11.11.2013, 20:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.11.2013, 20:31
Помогаю со студенческими работами здесь

Сложение, вычитание и умножение над матрицами целых чисел
Разработать проект, который обеспечивает выполнение операций сложения, вычитания и умножения над...

Рекурсия: сложение, вычитание, деление и вычисление остатка от деления двух целых чисел
Написать программу для реализации рекурсивных функций сложения, вычитания, деления и вычисления...

Рекурсия. Сложение и вычитание через сложение/вычитание единицы
Помогите пожалуйста народ!! Задача: Сложение и вычитание через сложение/вычитание единицы...

Сложение, вычитание, умножение и деление комплексных чисел
Помогите пожалуйста составить требуемые подпрограммы работы с комплексными числами(сложение,...


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

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