我想问一个关于程序编程课程必须完成的项目的问题。 测试要我解决这个问题:
预先,我必须说,对于“两组实数”,我使用了两个链表,而不是数组。 问题是我的教授列出了我必须遵循的“不要做”的事情清单,以便不加惩罚地解决测试问题,而真正的问题是他不希望体内出现多次“返回”函数的功能,而且我不知道一种无需多次转义即可执行这些递归函数的方法,我真的很感谢可以解决此问题的人的帮助。
对于这个问题,我在以下结构中创建了两组实数作为两个链接列表:
typedef struct elem_list {
int info;
struct elem_list *next;
} elem_list_t;
在主程序中,这两个列表是由用户根据输入创建的,它们分别称为list_A和list_B。
答案 0 :(得分:0)
如果要计算并集和相交,则需要对数据进行预先排序。
最好将数学集实现为排序的二叉树。从那以后,递归变得相当自然,因为二叉树算法通常被实现为递归。搜索,排序,平衡等。因此,此分配的主要部分应该是为二叉树实现抽象数据类型。
关于多重收益,从教义上避免它们是没有意义的,尽管老师可能想确保在函数的最后使用递归调用来使用所谓的“尾递归”。因为这通常是编译器可以很好地优化的唯一递归-所有其他形式的递归都非常慢。