1

以下を機能させることができません。これは私がこれまでに得たものです:

stepen(2).
stepen(X):-
   X mod 2=:=0,
   X1 is X/2,
   stepen(X1).//stepen means power(in Serbian).

spoji([],Y,Y).
spoji([X|Xs],Y,[X|Z]):-spoji(Xs,Y,Z).//spoji means append lists

vadi(nil,[]).
vadi(t(X,L,R),[X|Xs]) :-
   stepen(X),
   vadi(L,SL),
   vadi(R,SR), 
   spoji(SL,SR,Xs).//list of nodes that are power of 2.
4

3 に答える 3

0

と考える1 is 2^0場合は、stepen/1 述語の基本ケースを変更する必要があります。

ツリー内に 2 の累乗でないノードが見つかった場合、vadi/2 述語が失敗するため、より重要な修正が必要です。

次に、句を追加する必要があります

vadi(t(X,L,R),Xs) :-
   % \+ stepen(X), this test is not mandatory, but it depends on *where* you add the clause
   vadi(L,SL), vadi(R,SR), spoji(SL,SR,Xs).
于 2014-06-28T15:45:48.883 に答える