首页/新闻资讯/正文详情

C语言——函数,栈,递归

发布时间:2026/9/24 6:15:58 来源:云帆数科 栏目:资讯中心
C语言——函数,栈,递归
一函数的使用思想函数的功能是独立的单一的函数的实现语法注意1类型标识符反应的是函数带出来的结果的数据类型不能是数组类型2函数名是标识符命名规则和变量名规则一致3形式参数表示函数要处理的数据来源于实际给到的参数4函数体完成函数功能的那部分代码eg实现功能两个函数如何求和步骤1先确定函数名——与功能相关add或者sum步骤2从函数模型角度考虑——要处理哪些数据数据是哪种类型来确定形式参数的个数和类型形式参数语法步骤3梳理数据——函数的核心代码result a b;步骤4返回值 //返回值的类型就是类型标识符的类型(返回值类型如果不写默认是int型)(返回值的\结果(子函数花括号内定义的变量)\的类型与返回值类型不一致时以返回值类型为准)return result代码如下sum(int a,int b) { int result; result a b; return result; }一旦在当前作用域写了 int max; 或者 int max 5; 从这一行往下max 这个名字就代表变量不再代表函数。子函数一般放主函数前面如果放后面要提前先声明函数写这个即可int max(int a,int b);可以放住函数外面的前面即全局声明也可以只放main里用之前声明即局部声明如果函数不需要传入数据此时形式参数设计为void如果不需要返回值则函数类型设置为voidvoid 无返回值函数可以写 return; 后面不带任何数值否则报错作用提前结束子函数直接回到调用处。例如下调用函数后进入函数执行那自身是怎么保存的呢函数调用保存现场栈的工作原理当A函数调用B函数A暂停去跑BB跑完之后要回到A刚才停下来的那一行继续执行。所以调用B之前A必须把「现场」存到栈内存等B结束再恢复现场。以下是栈的介绍这个栈是专门一个空间是8M即1024*1024*8个字节每一个C语言代码都单开一个占空间主函数加子函数共用这段空间下图是直接递归,自己调用自己(是一种特殊的循环)一直打印hello(但是不停地进入会不断入栈等到栈空间不够就可能会误入不能访问的空间就会停止)void fun1() { printf(hello\n); fun1(); }从效率上说forwhiledo-while效率高但是有的问题的解决用递归更容易实现1. 递归就是函数自己调用自己直接/间接把大问题拆解成规模更小的同类型子问题。2. 必须具备两个条件1 递归调用调用自身把问题缩小2终止条件出口到达最简单的情况不再继续递归直接给出确定结果这个结果就是所有计算的源头。3. 执行分两个阶段① 递向下不断调用层层压入栈帧一直走到终止条件此时还不做计算② 归向上从终止条件拿到源头结果逐层返回每一层利用子问题的结果算出本层结果最终回到最初调用处得到答案。4. 没有终止条件或者入栈太多次会无限压栈造成栈溢出程序崩溃。5. 每一次递归调用都会产生独立栈帧局部变量互不干扰。

相关推荐

阿里云ECS部署Oracle 19c RAC避坑指南:云环境RAC高可用实战
阿里云ECS部署Oracle 19c RAC避坑指南:云环境RAC高可用实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 6:15:52

合并多次数组迭代(Combine Multiple Array Iterations):一次遍历完成多路筛选的 React 前端性能实践
合并多次数组迭代(Combine Multiple Array Iterations):一次遍历完成多路筛选的 React 前端性能实践

可观测性AI 评测LLMOpsAI 应用人工智能 【免费下载链接】phoenix AI Observability & Evaluation 项目地址: https://gitcode.com/gh_mirrors/phoenix13/phoenix 点击查看 免费下载 导读 在 React 与 Next.js 应用中,数据处理代码往往出现在渲染函… · 2026/9/24 6:15:46

LTspice BLDC基础仿真:从三相绕组、功率桥到反电动势建模
LTspice BLDC基础仿真:从三相绕组、功率桥到反电动势建模

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 6:15:08

EMQX 插件 API 网关修复:HTTP 请求头与查询参数透传机制深度解析
EMQX 插件 API 网关修复:HTTP 请求头与查询参数透传机制深度解析

后端物联网消息队列通信 【免费下载链接】emqx The most scalable and reliable MQTT broker for AI, IoT, IIoT and connected vehicles 项目地址: https://gitcode.com/gh_mirrors/em/emqx 点击查看 免费下载 导读 本文围绕 EMQX 开源仓库中的一条缺陷修复记录&… · 2026/9/24 8:26:18

SWIR051AU短波红外相机:从InGaAs原理到工业检测实战
SWIR051AU短波红外相机:从InGaAs原理到工业检测实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 8:25:15

LTspice第三方SPICE模型集成全流程指南
LTspice第三方SPICE模型集成全流程指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 8:25:02

芯片IP选型避坑指南:架构适配、工艺兼容与验证完备性实战
芯片IP选型避坑指南:架构适配、工艺兼容与验证完备性实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 8:24:56

Vega 平行坐标图实战:多维汽车数据的 axes-offset 折线布局规范全解析
Vega 平行坐标图实战:多维汽车数据的 axes-offset 折线布局规范全解析

数据可视化 【免费下载链接】vega A visualization grammar. 项目地址: https://gitcode.com/gh_mirrors/ve/vega 点击查看 免费下载 平行坐标(Parallel Coordinates)是一种用于多维数据可视化的经典图表:每个维度占据一条平行的… · 2026/9/24 8:24:31

RLHF、InstructGPT 与 DPO:大模型对齐训练全面解析
RLHF、InstructGPT 与 DPO:大模型对齐训练全面解析

本文系统讲解大模型对齐训练的核心方法:RLHF(基于人类反馈的强化学习)、InstructGPT 的三步对齐流程,以及 DPO(直接偏好优化)。从原理、步骤、优缺点到实践细节,一篇讲透。一、什么是 RLHF&… · 2026/9/24 8:24:25

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码