![]() |
|
|
![]()
|
|
| Smasher |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 22.3.2009 Где: Odessa, Ukraine Репутация: нет Всего: нет |
Вот так вот я вычисляю числа Фибоначчи, но мне надо их вычислять при помощи рекурсии в конце, чтобы это сделать надо раскоментить 2 строчку в clauses, но если это сделать то прога перестаёт работать и как бы пропускает вычисление, подскажите пожалуйста как это это сделать или предложите другой вариант вычислений чисел Фибоначчи, но только с рекурсией в конце
class predicates fib:(integer,integer) nondeterm anyflow. fib:() nondeterm anyflow. clauses fib():-fib(1,1). %fib(M,N):-!. fib(M,N):-M1=N,N1=N+M,stdIO::write(M," "),fib(M1,N1). Заранее благодарен |
|||
|
||||
| t_gran |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 13.11.2007 Где: г.Усть-Илимск Репутация: нет Всего: 37 |
Правильно, ведь prolog твои значения подставляет в fib(M,N):-!. и сразу выходит. Братко предлагает следующее:
А вот, к примеру, моя модификация
где, D-порядковый номер, а M и N-соседние числа. Тест:
Это сообщение отредактировал(а) t_gran - 24.3.2009, 08:40 -------------------- Я знаю, что ничего не знаю© Сократ ![]() |
||||||||
|
|||||||||
| Smasher |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 22.3.2009 Где: Odessa, Ukraine Репутация: нет Всего: нет |
t_gran,
да но мне надо с хвостовой рекурсией |
|||
|
||||
| t_gran |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 13.11.2007 Где: г.Усть-Илимск Репутация: нет Всего: 37 |
Пардон!
Вот хвостовая. Это сообщение отредактировал(а) t_gran - 27.3.2009, 05:47 -------------------- Я знаю, что ничего не знаю© Сократ ![]() |
|||
|
||||
| Винитарх |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 21.1.2007 Репутация: нет Всего: нет |
Дааа. Как всё здесь запущено!
Вот прога Фибоначчи на Visual Prolog 7.2 согласно математическому определению:
А вот эффективная прога на том же Visual Prolog 7.2 (третий аргумент - индекс искомого члена, способ вызова 46-го члена: N=fib(1,1,46) ):
Приходите к нам на progz.ru. Мы Вам покажем современный П Р О Л О Г!!! Это сообщение отредактировал(а) Винитарх - 20.2.2010, 20:03 |
||||
|
|||||
![]()
|
| Правила форума Prolog | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Prolog | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |