递归
1.函数自身调用自身,特点:将大事化小。
有点像这种感觉😐😐😐

2.条件
①:必须存在限制条件,满足条件时,不再执行递归。
②:每次递归后接近限制条件。
例:我们通过一个递归实现的一个函数strlen()(统计字符串长度)的功能 。通过这个例子我们将更容易理解递归。在函数(1)中学习了函数的调用,在这里复习一下。
由于实参中是一个数组,代表的是数组中第一个字符的地址,所以在形参中我们用char*类型,最后我们需要返回的是整型,所以函数类型用int型。

接下来我们看在代码中,程序是怎样执行的。程序首先找到main函数,按顺序由上往下执行,在printf中找到函数my_strlen(),进入my_strlen()。
首先介绍一下这个函数,参数char* str指向arr数组的第一个元素,\0为数组最后一个元素。else{return 0;}是为了实参数组传递过来一个空数组,此时,直接返回0(没有字符)。

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

看起来比较复杂,其实把思路捋清楚还是很容易理解。这和函数(1)中的嵌套调用也很相似。
⭕️ 注意,在写递归时,层次也不可太深否则会出现栈溢出的现象。

2214

被折叠的 条评论
为什么被折叠?



