目录

c语言笔记-静态函数和递归函数

c语言笔记 静态函数和递归函数


1.静态函数

静态函数就是被static修饰的函数;

为什么要有静态函数呢?

背景知识 :函数是可以跨文件使用的,也就是说函数a在文件1.c下被定义,也可以在2.c文件下使用。

所谓的静态函数就是使其函数只能在本文件内使用,在其前面加上static修饰。用staic修饰的函数可以缩小可见范围。

问:用static修饰的函数这样做有什么好处呢?

这样可以避免在其他文件中出现同名称的情况,避免互相影响。

2.递归函数

定义 :一个函数函数不断调用自己

特征:

  • 递归函数必须要有退出的条件,否则就会进入无线循环,导致栈内存满了而出现段错误;
  • 递归函数包含两个过程,逐渐递进和逐渐回归过程。

图解:

板书代码:

https://i-blog.csdnimg.cn/direct/85da5f6d45c941e99cfa0c218a629ca3.png

递归函数的return返回值必须要退出有条件,在返回值中调用自己,使其不断进入函数内存去接受另外一个返回值,在从最里面退出

第一次返回值:3*jiecheng(2)      //进入到jiecheng(2)里面
第二次返回值:   2*jiecheng(1)    //jiecheng(2) 返回2*jiecheng(1)
第三次返回值:      return 1     //jiecheng(1)  返回1

也可以理解为
          3*jiecheng(2)
          3*2*jiecheng(1)
          3*2*1

图解:

每一次调用函数,都会在栈内存分配一块空间给他使用,可以理解为第一次return返回的值是一个浓缩的值,它内含着很多次的调用。

代码验证:

#include <stdio.h>
#include <stdlib.h>

int mi(int a, int n)
{
    if (n  == 0)
    {
        return 1;
    }

    return mi(a, n - 1) * a;
}
int main(void) 
{
    int a = 7, n = 4;
    // 7的4次幂   7*7*7*7;
    int he = mi(a, n);
    printf("%d\n", he);

    return 0;
}

https://i-blog.csdnimg.cn/direct/54ae38cd17884592ac29d0686e95a4e1.png