簡體   English   中英

以遞歸方式返回列表頭部

[英]Return head of list recursively prolog

我希望每次用戶請求另一個值時返回列表的第一個元素,即List = [1, 2, 3] ,當程序執行時,它返回1 ,然而,當; 按下(用戶要求另一個值),然后返回2 ,依此類推,直到列表為空。

雖然我已經設法一次列出所有值,但這里的關鍵問題是,我如何等待並讓用戶決定他是否想要另一個值。

這樣做:

member( X, List ).

這將列出每個List的下一個成員; 對謂詞的每次調用都將實例化XList的下一個成員,直到所有成員都用完為止。

是的,有一個內置的功能,但我認為你應該嘗試自己寫,以更好地了解Prolog。

each_one([A|_],A).

列表的一個元素是它的頭元素。

each_one([_|B],X):- each_one(B,X).

更多元素在列表的尾部。 這是遞歸子句。

空列表中沒有元素,所以我們不寫任何東西(盡管我們可以編寫each_one([],_):- fail.具有相同的效果)。

現在你可以嘗試一下:

4 ?- each_one([1,2,3],X).
X = 1

Prolog向您展示了第一個解決方案並等待您的回復。 你按“;” 接着說:

      ;
X = 2 ;
X = 3 ;
false.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM