老中医CC1

递归是指一个函数调用自身的过程,这种调用方式被称为递归调用。在递归函数中,函数会不断地调用自身,直到满足某个条件才停止递归。

在代码中,函数reverse_str在调用自身之前,会先将指针向后移动一位,也就是指向下一个字符,然后再进行递归调用。由于递归是从内层函数开始执行的,所以最先调用的是最后一个字符的输出语句,而最后一个字符是在最后一次递归调用结束之后才输出的。

举个例子,如果输入的字符串为"Hello World!",则函数reverse_str的调用顺序如下:

  1. reverse_str("H")
  2. reverse_str("e")
  3. reverse_str("l")
  4. reverse_str("l")
  5. reverse_str("o")
  6. reverse_str(" ")
  7. reverse_str("W")
  8. reverse_str("o")
  9. reverse_str("r")
  10. reverse_str("l")
  11. reverse_str("d")
  12. putchar("!")

可以看到,在执行完第12步之后,整个递归调用过程才结束,程序才能继续往下执行。

总的来说,递归函数在执行时会不断地调用自身,每一次调用都会将原问题分解成更小的子问题。在本例中,函数reverse_str通过递归调用将字符串依次倒序输出,每次调用都只处理一个字符,最终完成整个字符串的反转输出。

void reverse_str(char *p)
{
    if(*p)
    {
        reverse_str(p+1);
        putchar(*p);
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值