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

Переопределить следующую функцию

06.11.2013, 13:54. Показов 1672. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Переопределить следующую функцию, используя DO вместо
DOTIMES:
>(defun power-of-2 (n)
(let ((result 1)) (dotimes (i n result)
(incf result result))))
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.11.2013, 13:54
Ответы с готовыми решениями:

Реализовать с применением функционалов и лямбда-выражений следующую функцию
Здравстуйте, помогите решить задачку: "Реализовать с применением функционалов и лямбда-выражений...

Переопределить функцию
Добрый день. Занимаюсь портированием стандартного gl.h, на динамический метод вызова. (Не...

Как переопределить функцию?
Есть форма которая отправляется таким способом: onsubmit="return AMI.Form.Filter.submit(this);" ...

(Наследование) Как переопределить функцию?
Здравствуйте, уважаемые форумчане! Недавно столкнулся с одной проблемой в Java. Пусть есть...

5
1057 / 951 / 109
Регистрация: 04.11.2012
Сообщений: 992
06.11.2013, 14:20 2
Лучший ответ Сообщение было отмечено как решение

Решение

Lisp
1
2
3
4
(defun power-of-2 (n)
  (do ((result 1 (incf result result))
       (i 0 (1+ i)))
      ((= i n) result)))
2
0 / 0 / 0
Регистрация: 30.10.2013
Сообщений: 3
06.11.2013, 14:31  [ТС] 3
В математике числа Фибоначчи образуют ряд 0, 1, 1, 2, 3, 5 8..... Эту
последовательность можно определить с помощью следующей
функции FIB:
fib(n)=0, если n=0
fib(n)=1, если n=1
fib(n)=fib(n-1)*fib(n-2), если n>1
Необходимо определить лисповскую функцию fib(n), вычисляю-
щую n-й элемент ряда Фибоначчи.
0
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
06.11.2013, 15:51 4
Цитата Сообщение от Lambdik Посмотреть сообщение
((result 1 (incf result result))
Это нехорошо. Макрос incf делает присваивание, которое здесь не нужно. То есть вы сделали result = result + result, при этом правая часть вернула 2*result, что вы и присвоили (второй раз!) переменной result. Иными словами, вы игнорируете побочный эффект, ради которого incf существует. Здесь надо было бы просто написать + вместо incf.
1
Модератор
Эксперт функциональных языков программированияЭксперт Python
37301 / 20735 / 4272
Регистрация: 12.02.2012
Сообщений: 34,124
Записей в блоге: 14
06.11.2013, 18:27 5
Lisp
1
2
3
4
5
6
7
8
9
10
(defun power-of-2 (n)
  (do ((result 1 (* 2 result))
       (i 0 (1+ i)))
      ((= i n) result)))
 
==> power-of-2
 
(power-of-2 5)
 
==> 32
Добавлено через 32 минуты
Цитата Сообщение от брюнеточка Посмотреть сообщение
Необходимо определить лисповскую функцию fib(n), вычисляю-
щую n-й элемент ряда Фибоначчи.
- есть правило: новый вопрос - новая тема.
1
4699 / 4394 / 380
Регистрация: 12.05.2012
Сообщений: 3,096
06.11.2013, 22:00 6
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
(defun n-fibonacci (n) ;без накапливающих параметров, простая рекурсия
  (if (< n 2)
      n
      (+ (n-fibonacci (- n 1)) (n-fibonacci (- n 2)))))
 
> (n-fibonacci 7)
 13
> (time (n-fibonacci 35))
Real time: 11.477045 sec.
Run time: 11.434874 sec.
Space: 0 Bytes
9227465
Добавлено через 17 секунд
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(defun n-fibonacci (n) ;без накапливающих, хвостовая рекурсия
  (labels ((fibonacci (n a b)
             (if (= n 0)
                 a
                 (fibonacci (- n 1) b (+ a b)))))
    (fibonacci n 0 1)))
 
> (n-fibonacci 7)
 13
> (time (n-fibonacci 35))
Real time: 0.0 sec.
Run time: 0.0 sec.
Space: 0 Bytes
9227465
Добавлено через 20 секунд
Lisp
1
2
3
4
5
6
7
8
9
10
11
(defun n-fibonacci (a b n) ;с накапливающими, хвостовая рекурсия
  (cond ((= n 2) b)
        ((n-fibonacci b (+ a b) (1- n)))))
 
> (n-fibonacci 1 1 7)
 13
> (time (n-fibonacci 1 1 35))
Real time: 0.0 sec.
Run time: 0.0 sec.
Space: 0 Bytes
9227465
1
06.11.2013, 22:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.11.2013, 22:00
Помогаю со студенческими работами здесь

Как переопределить функцию func2 в классе B
class A { A() {} и тд. public: functions.................... virtual void func1() = 0;...

Как переопределить перегруженную функцию в производном классе?
Как переопределить перегруженную функцию в производном классе? #include &lt;iostream&gt; class Number {...

Как переопределить дружественную функцию ввода для класса наследника
Есть класс предок, который имеет такую вот дружественную функцию ввода: friend ifstream &amp;...

Можно ли переопределить функцию-член в унаследованном классе, не объявляя её виртуальной в родительском?
Предположим, есть абстрактный класс Worker. class Worker { protected: char *myName; ...


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

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