C语言递归调用_使用递归函数调用方式,将输入的五个字符,以相反的顺序打印

本文介绍了一个使用递归函数实现字符反向输出的C语言程序,并详细解释了递归函数的工作原理及其特点,包括每次调用时的变量独立性、调用与返回的过程、执行顺序、以及必须包含的终止条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//使用递归函数调用方式,将输入的五个字符,以相反的顺序打印

    int main()
    {
        int i = 5;
        void palin(int n);

        printf("请输入五个字符:");
        palin(i);
        printf("\n");

        return 0;
    }
    void palin(int n)
    {
        char next;
        if(n<=1)
        {
        next = getchar();
        putchar(next);
        }
        else
        {
        next = getchar();
        palin(n-1);
        putchar(next);
        }
    }

 

递归的时候,每次调用一个函数,计算机都会为这个函数分配新的空间,这就是说,当被调函数返回的时候,调用函数中的变量依然会保持原先的值,否则也不可能实现反向输出

 

递归函数的特点:

1. 每一级函数调用时都有自己的变量,但是函数代码并不会得到复制,如计算5的阶乘时每递推一次变量都不同;

2. 每次调用都会有一次返回,如计算5的阶乘时每递推一次都返回进行下一次;

3. 递归函数中,位于递归调用前的语句和各级被调用函数具有相同的执行顺序;

4. 递归函数中,位于递归调用后的语句的执行顺序和各个被调用函数的顺序相反;

5. 递归函数中必须有终止语句。

 

效率

  1. 系统栈(也叫核心栈、内核栈) 
    是内存中属于操作系统空间的一块区域,其主要用途为: (1)保存中断现场,对于嵌套中断,被中断程序的现场信息依次压入系统栈,中断返回时逆序弹出; (2)保存操作系统子程序间相互调用的参数、返回值、返回点以及子程序(函数)的局部变量。

  2. 用户栈 
    是用户进程空间中的一块区域,用于保存用户进程的子程序间相互调用的参数、返回值、返回点以及子程序(函数)的局部变量。 
    我们编写的递归程序属于用户程序,因此使用的是用户栈。

  3. 栈溢出 
    函数调用的参数是通过栈空间来传递的,在调用过程中会占用线程的栈资源。而递归调用,只有走到最后的结束点后函数才能依次退出,而未到达最后的结束点之前,占用的栈空间一直没有释放,如果递归调用次数过多,就可能导致占用的栈资源超过线程的最大值,从而导致栈溢出,导致程序的异常退出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值