第2章逻辑程序设计语言PROLOG.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2.2.6 表处理与递归 1.表头与表尾 表头是表中的第一个元素;表尾是表中除第一个元素外的其余元素按原来顺序组成的表。 表头与表尾示例 ——————————————————————————————————— 表 表头 表尾 ——————————————————————————————————— [1, 2, 3,4,5] 1 [2, 3,4,5] [apple, orange, banana] apple [orange, banana] [[a, b], [c], [ d, e]] [a, b] [[c], [ d, e]] [″PROLOG″] ″PROLOG″ [ ] [ ] 无定义 无定义 ——————————————————————————————————— 2. 表的匹配合一 表的匹配合一示例 ———————————————————————————————————— 表1 表2 合一后的变量值 ———————————————————————————————————— [X︱Y] [ a, b, c ] X=a, Y=[ b, c ] [X︱Y] [ a ] X=a, Y=[ ] [a ︱Y] [X, b] X=a, Y=[ b ] [X,Y,Z] [a, b, c] X=a, Y=b, Z=c [[ a, Y ]︱Z] [[ X, b ],[ c ]] X=a, Y=b, Z=[[ c ]] ———————————————————————————————————— 例 设计一个能判断对象X是表L的成员的程序。 分析:    (1) 如果X与表L中的第一个元素(即表头)是同一个对象, 则X就是L的成员。  (2) 如果X是L的尾部的成员, 则X也就是L的成员。  程序:    member(X, [X|_]).   member(X, [Head|Tail]):-member(X, Tail). Goal: member(a, [a, b, c, d]). yes Goal: member(e, [a, b, c, d]). no Goal: member(X, [a, b, c, d]). X=a 例 表的拼接程序, 即把两个表连接成一个表。   append([], L, L). append([H|T], L2,[H|Tn]):-append(T,L2, Tn). Goal: append([1, 2, 3], [4, 5], L). L=[1, 2, 3, 4, 5] Goal: append([1,2,3],[4,5],[1,2,3,4,5]). yes Goal: append([1,2,3],[4,5],[1,2,3,4,5,6]). no Goal: append([1, 2, 3], Y, [1, 2, 3, 4, 5]). Y=[4, 5] Goal: append(X, [4, 5], [1, 2, 3, 4, 5]). X=[1, 2, 3] Goal: append(X, Y, [1, 2, 3, 4, 5]). X=[], Y=[1, 2, 3, 4, 5]

文档评论(0)

339910001 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档