新闻详情

新闻详情

首页 / 资讯中心 / 详情

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

发布时间:2026/11/7 11:09:26来源:尧图网络
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. 每一次递归调用都会产生独立栈帧局部变量互不干扰。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/6 6:37:16

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/7 0:39:20

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/7 6:36:21

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/6 17:25:36

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/6 14:29:05

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/6 14:29:07

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉