我想问一个关于我必须为程序编程类(class)做的项目的问题。 测试要我解决这个问题:
事先,我必须说,对于“两组实数”,我使用了两个链表,而不是数组。 问题是我的教授有一份我必须遵循的“不该做”的事情 list ,以便在不受惩罚的情况下解决测试,而真正的问题是他不希望体内出现多次“返回”一个函数的,并且我不知道在没有多次转义的情况下执行这些递归函数的方法,我真的很感谢能够解决这个问题的人的帮助。
对于这个问题,我在以下结构中创建了两组实数作为两个链接列表:
typedef struct elem_list {
int info;
struct elem_list *next;
} elem_list_t;
在主程序中,这两个列表是由用户根据输入创建的,它们称为 list_A 和 list_B。
最佳答案
如果您想计算并集和交集,您需要提前对数据进行排序。
数学集最好实现为排序二叉树。从那时起,递归就变得相当自然,因为二叉树算法通常以递归方式实现。搜索、排序、平衡等。因此,本次作业的主要部分应该是实现二叉树的抽象数据类型。
关于多次返回,教条地避免它们是没有意义的,尽管老师可能希望确保您使用所谓的“尾递归”,并在函数的最后进行递归调用。因为这通常是编译器可以很好优化的唯一一种递归 - 所有其他形式的递归都非常慢。
关于c - 需要帮助创建没有多次返回的递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56020931/