На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> Всё тот же пролог-деревья , Турбо-пролог . посчитать количество вершин в дереве.
    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, условие положительных чисел во всех ветвях по циклу рекурсии.

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

    кое-какие идеи есть, но пока не совсем.
    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
    0 пользователей:


    Рейтинг@Mail.ru
    [ Script execution time: 0,0126 ]   [ 15 queries used ]   [ Generated: 2.05.24, 18:59 GMT ]