云计算百科
云计算领域专业知识百科平台

递归与家谱树:不包含初始节点的祖先列表

在编程的世界里,递归是一种强大的工具,常常被用来解决具有层次结构的问题,比如家谱树。本文将探讨如何在不包含初始节点的情况下,利用递归获取一个人的所有祖先列表。

理解问题

我们有一个human结构,它包含一个人的名字及其两个父母的信息。我们的目标是编写一个函数my-ancestors-names,该函数能够返回一个人的所有祖先的名字,但不包括这个人自己。

初始结构

(struct human (name parent-1 parent-2))

原始函数

(define (ancestors-names pers)
(if (empty? pers)
\'()
(cons (human-name pers)
(append (ancestors-names (human-parent-1 pers))
(ancestors-names (human-parent-2 pers))))))

在这个函数中,我们可以看到,pers自身的名字被加入到返回的列表中。我们需要修改这个函数以排除pers的名字。

解决方案

为了实

赞(0)
未经允许不得转载:网硕互联帮助中心 » 递归与家谱树:不包含初始节点的祖先列表
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!