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

关于C语言递归实现1到n打印的程序流程及疑问咨询

关于递归打印1到n的C程序疑问解答

程序代码

// Prints numbers from 1 to n
void printNos(unsigned int n)
{
    if (n > 0) {
        printNos(n - 1);
        printf("%d ", n);
    }
    return;
}

// Driver code
int main()
{
    int n = 10;
    printNos(n);
    getchar();
    return 0;
}

理解补充与疑问解答

你前面5步的理解完全正确,接下来补全整个执行流程,就能解释清楚你的疑问:

疑问1:printf语句是如何被执行的?

当递归调用到printNos(0)时,0>0条件不成立,函数直接执行return返回。此时程序会回到上一层调用的上下文——也就是printNos(1)中,刚执行完printNos(0)的位置,接下来就会执行printf("%d ", 1),打印出1;随后printNos(1)执行return,回到printNos(2)的上下文,执行printf("%d ", 2)打印2;以此类推,直到回溯到最开始的printNos(10),执行printf("%d ", 10)打印10。

简单来说,递归是先一层层"深入"到最底层(n=0),再从底层"回溯"返回,每回溯一层就执行一次对应的printf,最终实现1到10的顺序打印。

疑问2:主函数中的getchar()有什么作用?

getchar()的作用是让程序暂停运行,等待用户输入任意一个字符后再结束进程。如果没有这行代码,程序运行完printNos(10)后会直接退出,在部分编译运行环境中,控制台窗口会一闪而过,你可能来不及查看打印结果。加上这行代码后,程序会停在当前状态,直到你按下任意键才会关闭窗口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 03:24:57