CodeGym
AI Academy
促销
CodeGym University
学习
课程
任务
调查 & 测验
游戏
帮助
日程
社区
Users
论坛
聊天
文章
成功故事
动态
评价
订阅
浅色主题

课时

  • 评论
  • 关于我们
开始
开始学习
立即开始学习
  • 我的进度
  • 课程
  • 任务地图
  • 课程
  • 调用栈

    C++ SELF
    等级 16,课时 0
    解析程序执行模型和 C++ 中的调用栈:为什么在调用 doSomething () ; 时执行会“返回”,什么是 LIFO 以及栈帧(参数、局部变量、返回点),以及 return 如何结束当前调用并销毁具有 automatic storage duration 的局部对象。通过带缩进的进入/退出跟踪和一个以瘦 main () 为核心的迷你项目来巩固理解,然后分析对栈工作方式的典型误解。
    可用
  • 递归的基准与步骤:没有基准程序会崩溃

    C++ SELF
    等级 16,课时 1
    分析构成正确递归的要素:基准情况(base case)和递归步骤(recursive step)。理解为什么在没有可达基准时递归函数会进入无限调用并最终导致栈溢出,如何检查收敛性(参数是否向基准移动),以及在 sum_to()、 factorial() 和 gcd() 示例中这些现象如何表现。最后 — 调用追踪、控制台菜单的小示例和“常见错误”部分。
    可用
  • 递归 vs 循环:选择标准

    C++ SELF
    等级 16,课时 2
    解析在 C++ 中如何有意识地在递归和循环之间做出选择:在哪里更容易看出终止(基本情况 vs 循环条件)、如何不丢失执行顺序(“调用前”和“返回时”),以及为什么边界错误( </ <=)和诸如 std::size_t 的无符号类型常常会破坏反向遍历。通过阶乘、求和 1.. n 和反向打印字符串的示例比较可读性与出错风险,最后我们将整理实用备忘和把递归改写为循环时的典型失败案例。
    可用
  • 递归的限制

    C++ SELF
    等级 16,课时 3
    解析 C++ 中递归的实际限制:递归深度如何消耗栈并导致 stack overflow,为什么调用次数和深度是不同的量,如何通过将简单计数器作为 int & 传参来“分析”递归函数,以及递归解法由于调用开销在时间上落后的情形。最后——典型错误:忘记基例、没有进展、沉重的局部对象以及类似“在 10 上能运行——那在 1'000'000 上也能”的错误期待。
    可用
  • 尾递归

    C++ SELF
    等级 16,课时 4
    我们讲解 C++ 中的尾递归:如何区分尾调用与普通调用(递归调用的返回值是函数的最后一个动作,即 return),为什么需要累加器 acc 以及中性元(求和为 0,求积为 1),为什么尾递归的形式本身并不保证不会发生栈溢出,什么是 TCO(Tail Call Optimization,尾调用优化)以及编译器为什么可能不应用它。演示如何手动将尾递归改写为 while/ for,并通过一个小练习巩固:为 std::string 编写统计数字和的工具 TextTools,分别用循环和尾递归实现。
    可用
Learn
  • 注册
  • Java 课程
  • 任务帮助
  • 定价
  • Java 语法
社区
  • 用户
  • 文章
  • 论坛
  • 聊天
  • 成功故事
  • 动态
  • 联盟计划
Company
  • 关于我们
  • 联系方式
  • 评价
  • 媒体中心
  • CodeGym for EDU
  • 常见问题
  • 支持
CodeGymCodeGym 是一个从零开始学习 Java 编程的在线课程。该课程是初学者掌握 Java 的完美方式。它包含 1200+ 个带即时验证的任务,以及必要的 Java 基础理论。为了帮助你在学习中取得成功,我们实现了一系列激励功能:测验、编码项目、关于高效学习的内容,以及 Java 开发者职业相关内容。
关注我们
界面语言
English Deutsch Español हिन्दी Français Português Polski বাংলা
简体中文
मराठी தமிழ் Italiano Bahasa Indonesia 繁體中文 Nederlands 日本語 한국어 Bulgarian Danish Hungarian Basa Jawa Malay Norwegian Romanian Swedish Telugu Thai Українська Filipino Turkish Azərbaycan Русский Vietnamese
“程序员是培养出来的,不是天生的” © 2026 CodeGym
MastercardVisa
“程序员是培养出来的,不是天生的” © 2026 CodeGym