| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Prolog > Найти сумму двух предыдущих четных (нечетных) |
| Автор: ahito1 9.3.2013, 22:38 |
| Никак не могу построить рекурсивную функцию для вычисления n-го члена последовательности, в которой каждый четный член равен сумме двух предыдущих четных, а нечетный равен сумме двух предыдущих нечетных |
| Автор: Stolzen 9.3.2013, 23:54 | ||
| Под четными и нечетными подразумеваются порядковые номера элементов в списке? Если так, то можно четные и нечетные элементы хранить в разных списках, и тогда функция будет следующей
| - это присоединение элемента к списку head - извлечение первого элемента из списка tail - список без первого элемента |
| Автор: ahito1 9.3.2013, 23:56 |
| помогите перевести код с джавы на пролог public class MyClass{ public static void main(String [] args){ int nom=10; System.out.println(Rec(nom)); } public static int Rec(int n){ int result=0; if (n>4){ result = Rec(n-2) + Rec(n-4); } else{ return n; } return result; } } |
| Автор: Stolzen 10.3.2013, 00:06 | ||
Я не очень хорошо пролог помню, но я посмотрел синтаксис в вики, и у меня получилось следующее
|
| Автор: ahito1 10.3.2013, 00:19 | ||||
никак не могу заставить Visual Prolog запустить его:( |
| Автор: ahito1 10.3.2013, 00:41 |
| для чисел фибоначи f(1,1) :– !. % Первое число есть1 f(2,1) :– !. % Второе число есть2 f(I,R) :– I>2, I1=I–1, I2=I–2, f(I1,M), f(I2,N), R=N+M. % общий случай а для моего случая никак не могу написать, не работает: class predicates f : (integer I, integer R) nondeterm anyflow. clauses f(1,R) :- R=1. f(2,R) :- R=2. f(3,R) :- R=3. f(4,R) :- R=4. f(I,R) :- I>4, I1=I-2, I2=I-4, f(I1, M), f(I2, N), R=N+M. |
| Автор: ahito1 10.3.2013, 01:09 |
| ПОБЕДА!!! заработало! если кому нужен код, кину |