Prolog编程:从基础到经典谜题求解
1. 第二天学习内容
1.1 递归
在编程中,Ruby和Io属于命令式编程语言,需要详细描述算法的每一步。而Prolog是声明式语言,在处理列表或树等集合时,常使用递归而非迭代。
以Waltons家族树为例,通过定义 father 关系和 ancestor 规则来推断祖先关系。以下是相关的知识库:
father(zeb, john_boy_sr).
father(john_boy_sr, john_boy_jr).
ancestor(X, Y) :- father(X, Y).
ancestor(X, Y) :- father(X, Z), ancestor(Z, Y).
- 规则解释 :
-
ancestor(X, Y) :- father(X, Y).表示如果X是Y的父亲,那么X是Y的祖先。 -
ancestor(X, Y) :- father(X, Z), ancestor(Z, Y).表示如果X是Z的父亲,且Z是Y的祖先,那么X是Y的祖先。 - 查询示例 :
-
| ?- ancestor(john_boy_sr, john_boy_jr).结果为true,表明
超级会员免费看
订阅专栏 解锁全文

1万+

被折叠的 条评论
为什么被折叠?



