| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Prolog > Вычмсление чисел Фибоначчи |
| Автор: Smasher 22.3.2009, 18:02 |
| Вот так вот я вычисляю числа Фибоначчи, но мне надо их вычислять при помощи рекурсии в конце, чтобы это сделать надо раскоментить 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 24.3.2009, 08:36 | ||||||||
Правильно, ведь prolog твои значения подставляет в fib(M,N):-!. и сразу выходит. Братко предлагает следующее:
А вот, к примеру, моя модификация
где, D-порядковый номер, а M и N-соседние числа. Тест:
|
| Автор: Smasher 24.3.2009, 17:41 |
| t_gran, да но мне надо с хвостовой рекурсией |
| Автор: t_gran 27.3.2009, 03:31 | ||
Пардон!
Вот хвостовая. |
| Автор: Винитарх 16.2.2010, 12:31 | ||||
| Дааа. Как всё здесь запущено! Вот прога Фибоначчи на Visual Prolog 7.2 согласно математическому определению:
А вот эффективная прога на том же Visual Prolog 7.2 (третий аргумент - индекс искомого члена, способ вызова 46-го члена: N=fib(1,1,46) ):
Приходите к нам на progz.ru. Мы Вам покажем современный П Р О Л О Г!!! |