Форум программистов, компьютерный форум, киберфорум
Наши страницы
Prolog
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
flogiston
0 / 0 / 1
Регистрация: 20.10.2011
Сообщений: 44
1

Хвостовая рекурсия

16.11.2011, 14:23. Просмотров 1033. Ответов 2
Метки нет (Все метки)

Уже несколько дней пытаюсь довести до ума вот эту задачку в Visual Prolog v.5.2.
Напишите программу с хвостовой рекурсией, которая допускает ввод числа и способна завершаться двумя способами. Она должна начинаться умножением числа на себя до тех пор, пока не достигнет числа 81 или числа, большего чем 100. Если достигнуто число 81, то печатается "Da", если же число больше 100 - печатается "Net".
Вот что получилось:

Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
predicates
vich(integer)
proverka_newB(integer) 
 
clauses 
vich(B):-
DopB=B,
NewB=DopB*B, 
write(B),nl, 
write(NewB),nl,
proverka_newB(NewB),
vich(NewB). 
 
proverka_newB(NewB):-NewB<80.
 
proverka_newB(NewB):-NewB>80,NewB<99, write ("Da "),nl,fail.
 
proverka_newB(NewB):-NewB>99, write ("Net "),nl,fail.
 
goal 
vich(8).
Например для числа 8: 8*8=64. Так как 81 не достигнуто, то должно сработать ещё одно вычисление, те 64*8=512. Но происходит умножение 64*64. Подскажите пожалуйста, как сделать чтобы работала правильно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.11.2011, 14:23
Ответы с готовыми решениями:

Хвостовая и не хвостовая рекурсия
Не хвостовая рекурсия predicates summa(integer, integer) clauses ...

Хвостовая рекурсия
Помогите с лабой. В Прологе не шарю, а сделать задание нужно. Напишите...

Хвостовая рекурсия
Напишите программу с хвостовой рекурсией, которая будет вычислять факториал без...

Хвостовая и нехвостовая рекурсия
написал программу с рекурсией, вопрос такой, сейчас здесь нехвостовая рекурсия,...

Хвостовая рекурсия в Prolog
Здравствуйте, помогите пожалуйста с хвостовой рекурсией. Никак не могу найти...

2
Грымзик
2478 / 1454 / 35
Регистрация: 14.09.2009
Сообщений: 2,742
16.11.2011, 16:05 2
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
predicates
vich(integer)
vich(integer,integer)
 
clauses 
vich(B):-vich(B,B).
 
vich(81,_):-!,write("Da"),nl.
vich(Temp,_):-Temp>=100,!,write("Net"),nl.
vich(Temp,B):-New=Temp*B,vich(New,B).
 
goal 
vich(8).
2
flogiston
0 / 0 / 1
Регистрация: 20.10.2011
Сообщений: 44
16.11.2011, 16:14  [ТС] 3
Грымзик, огромное спасибо!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.11.2011, 16:14

Хвостовая рекурсия: вычислить значение 2^n
Здравствуйте, помогите решить задачу на Прологе. Заранее благодарю за помощь....

Хвостовая рекурсия: возведение в степень
Эндрю: PREDICATES stepen(real, real, real) CLAUSES stepen(_, 0, 1):-...

Изменить программу. Хвостовая рекурсия. Поиск с возвратом.
Помогите написать программу с хвостовой рекурсией, которая будет работать как...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru