在Prolog中将列表中的所有元素加倍

时间:2016-08-01 22:00:31

标签: prolog

我需要帮助弄清楚我的谓词出了什么问题才能使列表中的所有元素加倍。我是Prolog的新手,很可能会遗漏一些非常明显的东西。基本上我的谓词应该列出一个列表(例如[1,2,3])并生成一个列表,其元素加倍([2,3,6])。

这是我到目前为止所做的:

double_elements([], []).
double_elements([H|T], Doubled_list):-
  X is H*2,
  append([X], Doubled_list, Doubled_list),
  double_elements(T, Doubled_list).

但是,无论我给出什么输入,我的代码目前只输出“false”。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

你试图将[X]附加到某个东西上并用同样的东西统一它。这总是会失败。

请改为尝试:

double_elements([], []).
double_elements([H|T], [X|Doubled_list]):-
    X is H*2,
    double_elements(T, Doubled_list).
相关问题