Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.144.230.82] |
|
Сообщ.
#1
,
|
|
|
tr(2,tr(7,empty, empty),tr(3,tree(4,empty,empty),
tr(1,empty,empty))). Вот такое дерево. Посмотрела мануал. корень 2, и от него 4 вершины. В прологе мимо. логику другая. вот исходник примера .. эээ... тэг пролога не вижу((( domains tree=nil;t(integer,tree,tree) predicates n(tree,integer). clauses n(nil,0). n(t(H,Left,Right),S):-H mod 2=1,!,n(Left,LeftSum),n(Right,RightSum),S=LeftSum+RightSum+H. n(t(_,Left,Right),S):-n(Left,LeftSum),n(Right,RightSum),S=LeftSum+RightSum. goal n(t(5,t(3,t(7,nil,nil),nil),t(1,t(30,nil,nil),t(5,nil,nil))),S),write(S). В данном примере, выводит сумму именно самих элементов от корня начиная, до всех его левых и правых частей и суммирует, по логике нечётных или вот так, часть пришло в голову: domains tree=nil;t(integer,tree,tree) predicates n(tree,integer). clauses n(nil,0). n(t(H,Left,Right),S):-H >0,!,n(Left,LeftSum),n(Right,RightSum),S=LeftSum+RightSum+H. n(t(_,Left,Right),S):-n(Left,LeftSum),n(Right,RightSum),S=LeftSum+RightSum. goal n(t(5,t(3,t(7,nil,nil),nil),t(1,t(30,nil,nil),t(5,nil,nil))),S),write(S). Именно H>0, условие положительных чисел во всех ветвях по циклу рекурсии. но у меня на задании дополнительно дали, найти именно количество веток. и тут торможу. количество веток, а не то, что находится в их содержании. буду признательна, кто подскажет или подобная задача была. кое-какие идеи есть, но пока не совсем. |