当前位置: 首页 > news >正文

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

目录

1.静态函数

为什么要有静态函数呢?

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

2.递归函数

图解:​编辑

代码验证:


1.静态函数

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

为什么要有静态函数呢?

        背景知识:函数是可以跨文件使用的,也就是说函数a在文件1.c下被定义,也可以在2.c文件下使用。
所谓的静态函数就是使其函数只能在本文件内使用,在其前面加上static修饰。用staic修饰的函数可以缩小可见范围。

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

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

2.递归函数

定义:一个函数函数不断调用自己
特征:
  • 递归函数必须要有退出的条件,否则就会进入无线循环,导致栈内存满了而出现段错误;
  • 递归函数包含两个过程,逐渐递进和逐渐回归过程。
图解:
板书代码:
递归函数的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;
}

相关文章:

  • 基于PyTorch通信算子的分布式训练阻塞定位方法
  • emacs使用mongosh的方便工具发布
  • 为什么 JPA 可以通过 findByNameContaining 自动生成 SQL 语句?
  • The First项目报告:重塑 DeFi 流动性的革新者,ELX 即将登陆 The First
  • Vue 系列之:路由
  • 玩转python:通俗易懂掌握高级数据结构:collections模块之namedtuple
  • 【附JS、Python、C++题解】Leetcode面试150题(9)——三数之和
  • C语言基础知识04
  • 2025-03-10 学习记录--C/C++-PTA 习题11-4 字符串的连接
  • Mysql_DML
  • java中如何把json转化的字符串再转化成json格式
  • python画图文字显示不全+VScode新建jupyter文件
  • 《SQL性能优化指南:新手如何写出高效的数据库查询
  • C# 事件使用详解
  • CPT208 Human-Centric Computing 人机交互 Pt.1
  • vue3 动态添加路由并生成左侧菜单栏
  • JavaScript中Promise详解
  • 蓝桥杯2024年第十五届省赛真题-回文数组
  • 数据库之PostgreSQL详解(待补充)
  • 一文了解JVM的垃圾回收
  • 建设网站中期/大的网站建设公司
  • 便宜的网站设计企业/手机创建网站教程
  • 企业网站建设中存在的主要问题会有哪些?/seo需求
  • 外贸汽车网站有哪些/百度账号登录不了
  • 网站做宣传域名什么好/中国企业500强
  • wordpress开头空两格/网站优化外包多少钱