初识递归.2------反向打印字符串

        今天照例分享一道经典的入门题目,相信大家一定很熟悉这道题目,经典的做法是将字符型数据存入一个数组,然后从最后一个个字符打印出来。可是为了之后的讲解,我们需要训练好写递归算法的能力,所以,这道题我们需要用递归写出。

(假设输入为 abcdefg

    输出则是: gfedcba)

题目解法:

        大家思考一下,递归的两大要素是什么? 上节讲过递归的两大要素是递归的停止条件和规律。假设这道题的停止条件是读入换行符。我们再看规律(越早输入的数据越晚输出)

具体代码:

        

#include<stdio.h>
void fun(void)
//不需要任何返回值和参数。
{
    char c;
    scanf("%c", &c);
//为在这一级打印的字符赋值。
    if (c == '\n')
        return;
//停止条件,如果c为换行符,则停止递归。
    fun();//进入下一级
    printf("%c", c);//等下一级函数return后,打印c。
    return;//来到了递归的最深层则要返回上一级。

}
int main(void)
{
    fun();

    return 0;
}

如下图:第一行是输入,第二行是输出。

总结:

        递归的二要素:停止条件,规律

        进入下一级函数前要进行判断,是否满足递归条件。

        本节内容用到了栈的概念,即先进后出。

  • 11
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值