c - 需要帮助创建没有多次返回的递归函数

标签 c recursion ansi-c

我想问一个关于我必须为程序编程类(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/

相关文章:

c - 指针未返回正确的值

c - 排序数组在 ANSI C 中不起作用

c - 如何为 DLL 函数编写(通用)自替换 stub 函数?

javascript - 遍历未知 DOM 的递归函数

c++ - 使用/不使用内在函数填充 C++

java - 为什么java中递归调用必须将方法声明为静态?

Django模型递归关系

c - 从 C 中具有不同数据类型的文件中读取特定行

c - 如何使用iconv 进行utf8 转换?

c - 定义有什么问题?