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

C语言递归函数返回值异常:预期返回6却得到1

递归函数返回值不符合预期的问题排查与解决

你的递归函数逻辑存在核心问题:调用func1(i+1)后,没有将递归调用的返回值向上传递,而是直接返回当前的参数i。这导致当递归触达基准情况(i=6)返回6后,这个值并没有被上层递归调用接收并返回,最终最外层的func1(1)只会返回自身的参数1。

修复后的代码

#include<stdio.h>

int func1(int i){
    
    if(i == 6) {  // 基准情况
        printf("\nEnd1");
        return i;
    }
        
    printf("%d ", i);
    // 关键修改:返回递归调用的结果,让基准值沿调用链传递
    return func1(i + 1);
}

int main()
{
    printf("\n%d", func1(1));
    return 0;
}

修复说明

原代码中,func1(i+1)仅被执行,但它的返回值被直接丢弃,之后函数仍执行return i。修改后,我们将递归调用的结果作为当前函数的返回值,这样基准情况返回的6会沿着递归调用链逐层向上传递,最终被最外层的func1(1)返回,得到你期望的输出:

1 2 3 4 5
End1
6

内容的提问来源于stack exchange,提问作者pvt-Tron

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 20:48:12