【问题标题】:Need help for creating recursive function without multiple returns需要帮助创建没有多次返回的递归函数
【发布时间】:2019-05-07 10:49:55
【问题描述】:

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

提前,我必须说,对于“两组实数”,我使用了两个链表,而不是数组。 问题是我的教授有一个我必须遵循的“不做”事情的清单,以便在没有惩罚的情况下解决测试,真正的问题是他不希望身体内有多个“回报”一个函数,我不知道有一种方法可以在没有多次转义的情况下执行这些递归函数,我非常感谢可以解决这个问题的人的帮助。

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

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

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

【问题讨论】:

  • 那么问题出在哪里?我没有看到任何尝试编写这些函数的代码?
  • 将每个例程构建为一组ifelse 语句或其他代码(例如,合适的循环)总是计算结果并将其存储在临时变量中。在函数结束时,返回该临时变量的值。
  • 您希望从本网站获得什么样的帮助?

标签: c recursion ansi-c


【解决方案1】:

如果您希望计算并集和交集,则需要提前对数据进行排序。

数学集最好实现为排序二叉树。从那时起,递归就变得相当自然了,因为二叉树算法通常被实现为递归。搜索、排序、平衡等。所以这个任务的主要部分应该是实现一个二叉树的抽象数据类型。

关于多次返回,教条式地避免它们是没有意义的,尽管老师可能希望确保您使用所谓的“尾递归”,并在函数的最后进行递归调用。因为这通常是编译器可以很好地优化的唯一一种递归 - 所有其他形式的递归都非常慢。

【讨论】:

    猜你喜欢
    • 2011-05-05
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 2019-06-12
    • 1970-01-01
    • 1970-01-01
    • 2020-07-04
    • 1970-01-01
    相关资源
    最近更新 更多