函数(2)__递归

递归

   1.函数自身调用自身,特点:将大事化小。

有点像这种感觉😐😐😐

c91398a9e0b34777a6acfa06c2e1cf2b.jpg

   2.条件  

       ①:必须存在限制条件,满足条件时,不再执行递归。

       ②:每次递归后接近限制条件。

例:我们通过一个递归实现的一个函数strlen()(统计字符串长度)的功能 。通过这个例子我们将更容易理解递归。在函数(1)中学习了函数的调用,在这里复习一下。

        由于实参中是一个数组,代表的是数组中第一个字符的地址,所以在形参中我们用char*类型,最后我们需要返回的是整型,所以函数类型用int型。

ff58e07e340b4612b824ac119504ad9f.png

     接下来我们看在代码中,程序是怎样执行的。程序首先找到main函数,按顺序由上往下执行,在printf中找到函数my_strlen(),进入my_strlen()。

1b793d5e60494a7d8d9126466cd7467b.png 

        首先介绍一下这个函数,参数char* str指向arr数组的第一个元素,\0为数组最后一个元素。else{return 0;}是为了实参数组传递过来一个空数组,此时,直接返回0(没有字符)。

fdf5eefe1afd48e38eae891aa5fe7fd3.png

      现在,我们来看这个函数内部的执行顺序:

7e541d83acf94ecfb953b33f5cfef82f.jpg

       看起来比较复杂,其实把思路捋清楚还是很容易理解。这和函数(1)中的嵌套调用也很相似。

⭕️   注意,在写递归时,层次也不可太深否则会出现栈溢出的现象。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值