我们被要求在一次考试中编写一个基于菜单的计算器,一旦完成所需的计算,我们就将控制权返回到菜单。
我写了以下代码作为解决方案,尽管教授认为它是正确的,但我仍然认为在table(A,N)的第一个子句返回false之后,必须有一种更好的方法将控制权返回到菜单。 请注意,我已经删除了很多与我的问题无关的原始代码。
menu :-
write('Enter a choice: '),
read(C),
choice(C).
choice(1) :-
table(5).
table(N) :-
A is 1,
start(A,N).
table(A,N) :-
K is A*N,
write(K),
nl,
A1 is A+1,
A1=<10,
table(A1, N)
;
menu.
我对序言很陌生,因此该问题的措词可能不恰当。如果是这样,请告诉我。
答案 0 :(得分:0)
您可以使用repeat/0
永久循环。
menu :-
repeat, % add this line
write('Enter a choice: '),
read(C),
choice(C).
choice(1) :-
table(5).
table(N) :-
A is 1,
start(A,N).
table(A,N) :-
K is A*N,
write(K),
nl,
A1 is A+1,
A1=<10,
table(A1, N).
% ; % delete this line
% menu. % delete this line