You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++自定义函数中'return 0;'的返回值及递归sum函数工作原理

这段C++递归程序的疑问解答

先看你贴的代码:

#include <iostream>
using namespace std;

int sum(int k) {
  if (k > 0) {
    return k + sum(k - 1);
  } else {
    return 0;
  }
}

int main() {
  int result = sum(10);
  cout << result;
  return 0;
}

问题一:sum函数里的return 0;返回什么值

sum函数的返回类型是int,这个return 0;就是返回整数0给调用它的上一层函数。它的核心作用是作为递归的终止条件:当传入的参数k不大于0时,递归停止,不再继续调用sum,而是返回0作为这一层的计算结果。

另外提一句main函数里的return 0;——这是返回给操作系统的状态码,0表示程序正常执行结束,和sum函数里的return 0是完全不同的用途。

问题二:为什么调用sum(10)不会直接返回0

这得拆解递归的执行逻辑,本质是先层层向下发起调用,再反向向上计算返回值:

  • 调用sum(10)时,因为10>0,执行return 10 + sum(9),但此时10还没法完成加法,必须先等sum(9)的结果出来;
  • sum(9)同理,执行return 9 + sum(8),继续等待sum(8)的结果;
  • 以此类推,直到调用sum(0),触发else分支,直接返回0;
  • 接下来开始反向计算:sum(1)拿到sum(0)的0,返回1+0=1;sum(2)拿到sum(1)的1,返回2+1=3;……直到sum(10)拿到sum(9)的45,返回10+45=55,这就是最终输出的结果。

说白了,递归不是一碰到return 0就直接结束整个程序,而是先把所有嵌套的调用都执行到终止条件,再从最底层开始逐层往上累加,最后得到总和。

内容的提问来源于stack exchange,提问作者ToXiC_BRAiN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 12:07:16