如何在DOSBOX TurboProlog中使用if-then-else条件



如果列表是否为回文,但我不能使用条件L1=L&L1<>L用于打印"列表是回文!"&"列表不是回文",顺便说一句,我几乎尝试了所有可用的在线方式,但没有成功。

我试过(if->then;else(&(如果,则(;(否则的话(等等,但都以失败告终。非常感谢您的帮助!

domains
ll=integer*
predicates
rev(ll,ll).
revl(ll,ll,ll).
clauses
rev(L1,L):-
revl(L1,[],L).
% I want to use if and else here to print If it is palindrome or not!
revl([],L,L).
revl([H|L1],L2,L3):-
revl(L1,[H|L2],L3).

您不需要使用if和else。

如果执行达到你所指示的点,你肯定有一个回文。

rev(L1,L):-
revl(L1,[],L),       % it's a palindrome if revl(L1,[],L) succeeds
write("It's a palindrome!").
% Recursively reverse A to B in revl(A,B,X)
revl([],L,L).                            % succeed if at the end B=X 
revl([H|L1],L2,L3):- revl(L1,[H|L2],L3). % reverse 1 step

你想要什么:

rev(L1,L):-
revl(L1,[],L),!    % it's a palindrome if revl(L1,[],L) succeeds
write("It's a palindrome!").
rev(_,_):-             % alternative solution in case it's not a palindrome   
write("It's not a palindrome!").
% Recursively reverse A to B in revl(A,B,X)
revl([],L,L).                            % succeed if at the end B=X 
revl([H|L1],L2,L3):- revl(L1,[H|L2],L3). % reverse 1 step

使用if-then-else

rev(L1,L):-
revl(L1,[],L) 
-> write("It's a palindrome!")
;  write("It's not a palindrome!").
revl([],L,L).
revl([H|L1],L2,L3):- revl(L1,[H|L2],L3).

相关内容

  • 没有找到相关文章

最新更新