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

时间:2019-05-07 10:49:55

标签: c recursion ansi-c

我想问一个关于程序编程课程必须完成的项目的问题。 测试要我解决这个问题:

预先,我必须说,对于“两组实数”,我使用了两个链表,而不是数组。 问题是我的教授列出了我必须遵循的“不要做”的事情清单,以便不加惩罚地解决测试问题,而真正的问题是他不希望体内出现多次“返回”函数的功能,而且我不知道一种无需多次转义即可执行这些递归函数的方法,我真的很感谢可以解决此问题的人的帮助。

对于这个问题,我在以下结构中创建了两组实数作为两个链接列表:

typedef struct elem_list {
    int info;
    struct elem_list *next;
}   elem_list_t;

在主程序中,这两个列表是由用户根据输入创建的,它们分别称为list_A和list_B。

1 个答案:

答案 0 :(得分:0)

如果要计算并集和相交,则需要对数据进行预先排序。

最好将数学集实现为排序的二叉树。从那以后,递归变得相当自然,因为二叉树算法通常被实现为递归。搜索,排序,平衡等。因此,此分配的主要部分应该是为二叉树实现抽象数据类型。

关于多重收益,从教义上避免它们是没有意义的,尽管老师可能想确保在函数的最后使用递归调用来使用所谓的“尾递归”。因为这通常是编译器可以很好地优化的唯一递归-所有其他形式的递归都非常慢。