机器学习(10)——神经网络
文章目录
- 1. 神经网络基本原理
- 1.1. 什么是神经网络
- 1.2. 核心思想
- 2. 基础组件
- 3. 前向传播(Forward Propagation)
- 4. 反向传播(Backpropagation)
- 5. 激活函数对比
- 6. 网络架构类型
- 7. 优化策略
- 8. Python示例(PyTorch)
- 9. 超参数调优
- 10. 应用场景
- 11. 前沿方向
- 12. 总结
1. 神经网络基本原理
1.1. 什么是神经网络
神经网络(Neural Networks,简称NN)是一类模仿生物神经系统的数学模型,用于处理和解决各种类型的任务,如分类、回归、模式识别等。神经网络属于机器学习领域的一个重要分支,特别是在深度学习(Deep Learning)中起到了核心作用。
1.2. 核心思想
神经网络是一种受生物神经元启发的多层非线性模型,通过堆叠可学习的权重层和激活函数,实现对复杂数据的表示与预测。
其核心能力来自:
-
层次化特征提取:浅层捕捉局部/低级特征(如边缘),深层组合为高级语义(如物体)。
-
端到端学习:通过梯度反向传播自动优化所有参数。
2. 基础组件
组件 | 作用 | 常见实现 |
---|---|---|
神经元(Neuron) | 计算加权输入+偏置,通过激活函数输出。 | z = w T x + b , a = σ ( z ) z = w^T x + b, \, a = \sigma(z) z=wTx+b,a=σ(z) |
权重(Weights) | 连接神经元,决定特征重要性。 | 矩阵 W ∈ R m × n W \in \mathbb{R}^{m \times n} W∈Rm×n |
激活函数 | 引入非线性,使网络能拟合任意函数。 | ReLU, Sigmoid, Tanh, Softmax |
损失函数 | 量化预测与真实值的差距,指导参数更新。 | MSE(回归), Cross-Entropy(分类) |
优化器 | 调整权重更新的方向和步长。 | SGD, Adam, RMSprop |
3. 前向传播(Forward Propagation)
数据从输入层逐层传递至输出层:
输入层 → h 1 = σ ( W 1 x + b 1 ) \text{输入层} \rightarrow \mathbf{h}_1 = \sigma(W_1 \mathbf{x} + \mathbf{b}_1) 输入层→h1=σ(W1x+b1)
隐藏层 → h l = σ ( W l h l − 1 + b l ) \text{隐藏层} \rightarrow \mathbf{h}_l = \sigma(W_l \mathbf{h}_{l-1} + \mathbf{b}_l) 隐藏层→hl=σ(Wlhl−1+bl)
输出层 → y ^ = f ( W L h L − 1 + b L ) \text{输出层} \rightarrow \hat{\mathbf{y}} = f(W_L \mathbf{h}_{L-1} + \mathbf{b}_L) 输出层→y^=f(WLhL−1+bL)
-
σ \sigma σ:激活函数(如ReLU)。
-
f f f:输出层激活函数(如Softmax用于多分类)
4. 反向传播(Backpropagation)
通过链式法则计算损失对每层权重的梯度,从输出层回溯至输入层:
∂ L ∂ W l = ∂ L ∂ h l ⋅ ∂ h l ∂ W l \frac{\partial \mathcal{L}}{\partial W_l} = \frac{\partial \mathcal{L}}{\partial \mathbf{h}_l} \cdot \frac{\partial \mathbf{h}_l}{\partial W_l} ∂Wl∂L=∂hl∂L⋅∂Wl∂hl
- 关键步骤:
-
- 计算输出层误差 δ L = ∇ y ^ L ⊙ f ′ ( z L ) \delta_L = \nabla_{\hat{y}} \mathcal{L} \odot f'(\mathbf{z}_L) δL=∇y^L⊙f′(zL)。
-
- 反向传播误差: δ l = ( W l + 1 T δ l + 1 ) ⊙ σ ′ ( z l ) \delta_l = (W_{l+1}^T \delta_{l+1}) \odot \sigma'(\mathbf{z}_l) δl=(Wl+1Tδl+1)⊙σ′(zl)。
-
- 计算梯度: ∇ W l L = δ l h l − 1 T \nabla_{W_l} \mathcal{L} = \delta_l \mathbf{h}_{l-1}^T ∇WlL=δlhl−1T。
-
5. 激活函数对比
函数 | 公式 | 优点 | 缺点 |
---|---|---|---|
Sigmoid | 1 1 + e − x \frac{1}{1 + e^{-x}} 1+e−x1 | 输出在(0,1),适合概率 | 梯度消失,非零中心化 |
Tanh | e x − e − x e x + e − x \frac{e^x - e^{-x}}{e^x + e^{-x}} ex+e−xex−e−x | 零中心化,梯度更强 | 仍存在梯度消失 |
ReLU | max ( 0 , x ) \max(0, x) max(0,x) | 计算快,缓解梯度消失 | 神经元“死亡”问题 |
LeakyReLU | max ( α x , x ) \max(\alpha x,x) max(αx,x) | 解决ReLU死亡问题( α = 0.01 \alpha=0.01 α=0.01) | 需调参 |
Softmax | e z i ∑ j e z j \frac{e^{z_i}}{\sum_j e^{z_j}} ∑jezjezi | 多分类输出概率归一化 | 仅用于输出层 |
6. 网络架构类型
类型 | 结构特点 | 应用场景 |
---|---|---|
全连接网络(FCN) | 每层神经元与下一层全连接 | 小规模结构化数据(如表格数据) |
卷积网络(CNN) | 局部连接+权重共享,捕捉空间特征 | 图像、视频处理 |
循环网络(RNN) | 时序递归结构,处理序列依赖 | 自然语言、时间序列预测 |
Transformer | 自注意力机制,并行处理长序列 | 大语言模型(LLM)、多模态任务 |
7. 优化策略
-
参数初始化:
- Xavier初始化: W ∼ N W \sim \mathcal{N} W∼N(0, 2 n i n + n o u t ) \sqrt{\frac{2}{{n_{in}} + n_{out}}}) nin+nout2)
- He初始化(ReLU适用): 2 n i n \sqrt{\frac{2}{n_{in}}} nin2
-
正则化:
- L2正则化:损失函数中加入 λ ∥ W ∥ 2 \lambda \|W\|^2 λ∥W∥2
- Dropout:训练时随机屏蔽神经元(比例通常0.2~0.5)
-
批归一化(BatchNorm):
- 对每层输入归一化: x ^ = x − μ σ 2 + ϵ \hat{x} = \frac{x - \mu}{\sqrt{\sigma^2 + \epsilon}} x^=σ2+ϵx−μ,加速训练。
8. Python示例(PyTorch)
import torch
import torch.nn as nn
import torch.optim as optim# 定义网络
class MLP(nn.Module):def __init__(self, input_dim, hidden_dim, output_dim):super().__init__()self.layers = nn.Sequential(nn.Linear(input_dim, hidden_dim),nn.ReLU(),nn.Linear(hidden_dim, output_dim),nn.Softmax(dim=1))def forward(self, x):return self.layers(x)# 训练流程
model = MLP(input_dim=784, hidden_dim=128, output_dim=10)
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)for epoch in range(10):optimizer.zero_grad()outputs = model(inputs)loss = criterion(outputs, labels)loss.backward()optimizer.step()
9. 超参数调优
-
学习率(lr):尝试对数尺度(如0.1, 0.01, 0.001)。
-
批大小(batch_size):通常32~256,内存允许下越大越稳定。
-
网络深度/宽度:根据任务复杂度调整(如ResNet可达1000层)。
10. 应用场景
-
计算机视觉:图像分类(CNN)、目标检测(YOLO)。
-
自然语言处理:机器翻译(Transformer)、情感分析(RNN)。
-
强化学习:游戏AI(AlphaGo)、机器人控制。
11. 前沿方向
-
自监督学习:利用无标签数据预训练(如对比学习)。
-
神经架构搜索(NAS):自动化设计网络结构。
-
可解释性:可视化注意力机制(如Grad-CAM)。
12. 总结
神经网络通过层次化非线性变换实现强大的函数拟合能力,其成功依赖于:
-
架构设计(如CNN处理图像、Transformer处理文本)。
-
优化技术(如Adam、Dropout)。
-
大规模数据与算力支撑(GPU/TPU)。
相关文章:
机器学习(10)——神经网络
文章目录 1. 神经网络基本原理1.1. 什么是神经网络1.2. 核心思想 2. 基础组件3. 前向传播(Forward Propagation)4. 反向传播(Backpropagation)5. 激活函数对比6. 网络架构类型7. 优化策略8. Python示例(PyTorch&#x…...
Qt软件开发-摄像头检测使用软件V1.1
系列文章目录 Qt软件开发-摄像头检测使用软件V1.1 文章目录 系列文章目录前言一、V1.1增加了哪些功能?二、代码构成1.总体结构2. 代码内容 三、效果展示图总结 前言 之前,在Qt软件开发-摄像头检测使用软件:https://blog.csdn.net/xuming204…...
AI日报 - 2025年04月26日
🌟 今日概览(60秒速览) ▎🤖 模型竞赛 | OpenAI与Google新模型在Arena榜单激烈角逐,性能指标各有千秋。 OpenAI发布o3/o4-mini等新模型,Gemini 2.5 Pro紧随其后,数学、编程能力成焦点。 ▎💼 商业动向 | 并…...
ES6 Map/WeakMap/Set/WeakSet 全解指南
一、设计思想与核心概念 1. 解决传统结构的痛点 Object:键只能是字符串/Symbol、无序、无size属性Array:查找效率低(O(n))、无自动去重机制核心突破:// 传统方式 vs ES6方式 const obj { [{}]: value }; // 键会被转为"[object Obje…...
【Python】使用uv管理python虚拟环境
本文介绍了python虚拟环境管理工具uv,包括uv的作用、uv的常用命令等等。 参考:UV - 管理Python 版本、环境、第三方包 1. 介绍uv 官网:https://docs.astral.sh/uv/ uv是一个python虚拟环境管理工具,可以用来替代pip、pyenv、vir…...
求解,如何控制三相无刷电机?欢迎到访评论
问题:通过一个集成的TF2104芯片控制H桥上桥臂和下桥臂,如何控制?还是说得需要PWM_UH和PWM_UL分开控制?...
002 六自由度舵机机械臂——姿态解算理论
00 DH模型的核心概念 【全程干货【六轴机械臂正逆解计算及仿真示例】】 如何实现机械臂的逆解计算-机器谱-robotway DH模型是机器人运动学建模的基础方法,通过四个参数描述相邻关节坐标系之间的变换关系。其核心思想是将复杂的空间位姿转换分解为绕轴旋转…...
部署大模型需要多少GPU显存?以DeepSeek R1部署为例
引言 部署大型语言模型(LLM)时究竟需要多少GPU显存?本文将进行一次简单测算。 如何计算 算法1 可以用一个简单的公式来计算显存占用(单位GB): 参数说明如下: 符号 含义 M 所需的 GPU 显存…...
C++?类和对象(下)!!!
一、前言 在之前我们已经讨论过了有关类和对象的前置知识以及类中的六大默认成员函数,在本期我们继续再讨论类和对象中剩余的友元、初始化列表等相关知识,如果需要再了解之前的知识的话,链接奉上:C?类和对象࿰…...
function,bind,lambda的用法
C中的std::function、std::bind与Lambda表达式详解 一、std::function std::function是C11标准引入的类模板,用于封装任意类型的可调用对象,例如函数指针、Lambda表达式、函数对象等。通过std::function可以实现不同形式可调用对象的统一存储与调用…...
Maven的聚合工程与继承
目录 一、为什么需要使用Maven工程 二、聚合工程的结构 三、聚合工程实现步骤 四、父工程统一管理版本 五、编译打包 大家好,我是jstart千语。想着平时开发项目似乎都是用maven来管理的,并且大多都是聚合工程。而且在maven的聚合工程中,…...
C/C++对时间的处理
1. 两种数据结构 time_t 是一个在C和C++编程语言中用于表示时间的类型。time_t类型通常是一个长整型(long int)或整数类型,用于表示从特定参考点(通常是1970年1月1日00:00:00 UTC)经过的秒数。 time_t定义在<ctime>头文件中,通常用于记录时间戳,比如获取当前时间…...
Spring Boot 支持政策
🧑💻 Spring Boot 支持政策 ✒️ Andy Wilkinson 于2023年12月7日编辑本页 32次修订 📌 核心政策 🛡️ VMware Tanzu 开源支持政策 Spring Boot 针对关键错误和安全问题提供支持 📆 版本支持周期 1️⃣ 主要版本&a…...
实验四 进程调度实验
一、实验目的 1、了解操作系统CPU管理的主要内容。 2、加深理解操作系统管理控制进程的数据结构--PCB。 3、掌握几种常见的CPU调度算法(FCFS、SJF、HRRF、RR)的基本思想和实现过程。 4、用C语言模拟实现CPU调度算法。 5、掌握CPU调度算法性能评价指…...
静态多态和动态多态的区别
C多态机制深度解析 多态是面向对象编程的核心特性,允许通过统一接口执行不同实现。在C中,多态表现为基类指针或引用调用虚函数时,根据实际对象类型执行对应派生类的函数逻辑。 基础实现示例 定义基类与派生类,演示动态绑定…...
现代化Android开发:Compose提示信息的最佳封装方案
在 Android 开发中,良好的用户反馈机制至关重要。Jetpack Compose 提供了现代化的 UI 构建方式,但提示信息(Toast/Snackbar)的管理往往显得分散。本文将介绍如何优雅地封装提示信息,提升代码可维护性。 一、基础封装方案 1. 简单 Snackbar …...
Android学习总结之Retrofit篇
1. 注解原理概述 在 Java 里,注解是一种元数据,它为代码提供额外信息但不影响程序的实际逻辑。注解可以在类、方法、字段等元素上使用,并且能在编译时、运行时通过反射机制被读取。Retrofit 充分利用了 Java 注解机制,通过自定义…...
Python 第 12、13 节课 - 元组和列表
- 第 94 篇 - Date: 2025 - 04 - 26 Author: 郑龙浩/仟墨 【Python 在校课堂笔记】 Python 第 12、13 节课 - 元组和列表 上课时间: 2025-04-21(12) 2025-04-24(13) 文章目录 Python 第 12、13 节课 - 元组和列表一 元组1 元组的…...
新特性版本升级指引
✨ 升级到新特性版本时的配置迁移 1️⃣ 🔧 配置迁移工具说明 当您将应用升级到新特性版本时,可能需要处理部分配置属性的重命名或移除问题。 2️⃣ 🚀 启用方法 Spring Boot 提供了环境分析工具: 应用启动时打印诊断信息运行时…...
6.1 客户服务:智能客服与自动化支持系统的构建
随着企业数字化转型的加速,客户服务作为企业与用户交互的核心环节,正经历从传统人工服务向智能化、自动化服务的深刻变革。基于大语言模型(LLM)和智能代理(Agent)的技术为构建智能客服与自动化支持系统提供…...
从新手到高手:小程序开发进阶技巧分享
小程序开发从入门到精通需要经历技术积累、架构优化和工程化实践等多个阶段。以下是结合真实项目经验的进阶路线与核心技术要点,涵盖性能优化、架构设计、跨平台开发等关键领域: 一、性能调优实战技巧 1. 首屏渲染加速方案 // 预请求关键数据ÿ…...
S参数的含义
S参数的含义: 在低速设计时代,工程界普遍使用等效集总电路模型来描述互连通道的过孔、连接器等各部分。对于上升时间达到几个ns的低速数字信号,甚至可以使用一个0Ω电阻代替连接器,分析的结果也不会和实际情况有太大的差别。但是当…...
职场十二法则-马方
马方老师的《职场十二法则》,献给初入职场工作中迷茫的自己。 1.挣钱是能力的副产品,能力比挣钱重要,让自己值钱比有钱更重要。成长比赚钱重要,年轻时把成长放第一位,挣钱放第二位,通过提升能力实现长期收益。 2.成长…...
安装docker,在docker上安装mysql,docker上安装nginx
目录 一.安装docker 1.1查看Linux版本的命令这里推荐两种: 1.2查看内核版本有三种方式: 2.安装 2.1 如果之前安装了docker,先删除旧版本的doker 2.2 安装需要的软件包,yum-util提供yum-config-manager功能,另外两…...
Java基础第五章、面向对象程序设计
1.package包 如果引入的不同包里面有相同的类名时,需要对要使用的类进行完整的限定名指定。 2.访问修饰符 子类对父类的方法重写也遵循上面的原则 一个java文件中最多只能有一个public(和文件同名)的类。 3.初始化块 //Driver.java public class Driver {private lo…...
RD电子实验记录本选用贴士A-B-C
传统的实验记录本,令人又爱又恨本 如何挑选电子实验室记录本(ELN)的品牌/服务商/供应商? 电子实验记录本,又名为ELN,Electronic lab notebook,enotebook,研发电子管理系统…...
Python 第 11 节课 - string 与 random 的方法
- 第 93 篇 - Date: 2025 - 04 - 26 Author: 郑龙浩/仟墨 【Python 在校课堂笔记】 Python 第 11 节课 - string 与 random 的方法 上课时间: 2025-04-14 文章目录 Python 第 11 节课 - string 与 random 的方法一 string 的方法1 s.split()2 s.find()3 s.replace()4 s.strip…...
proxychains4系统代理for linux(加速国内github下载速度,pip安装)
1.proxychains4代理安装: sudo apt-get install proxychains42.找到配置文件/etc/proxychains4.conf在[ProxyList]后面添加以下内容: socks5 127.0.0.1 10808 配置如下: 3.使用proxychains4(git clone): proxychains4 git c…...
LLM基础之源码一
transformers 核心源码梳理 Trainer部分: __init__() 初始化函数: def __init__(xxx):if args is None:output_dir "tmp_trainer"args TrainingArguments(output_diroutput_dir) self.args argsself.compute_loss_func compute_loss_fun…...
蛮荒tv桌面永不升级版app下载-蛮荒桌面安卓电视版下载
蛮荒桌面是一款具有丰富桌面内容的生活应用软件,可以连接电视上使用,用户将需要的软件添加到桌面上,系统就会自动分类管理软件,小编今天为大家推荐一款功能更大强大的电视桌面应用——乐看家桌面。 乐看家桌面功能亮点: 1.官网下载刷入机顶盒…...
2025蓝桥省赛c++B组第二场题解
前言 这场的题目非常的简单啊,至于为什么有第二场,因为当时河北正在刮大风被迫停止了QwQ,个人感觉是历年来最简单的一场,如果有什么不足之处,还望补充。 试题 A: 密密摆放 【问题描述】 小蓝有一个大箱子࿰…...
c#简易超市充值卡程序充值消费查余额
开发背景 本软件是给克什克腾旗某公司开发的一个简易的超市充值卡程序 # 功能 1、充值卡的充值、消费、查询余额 github下载:https://github.com/oyangxizhe/cash.git...
使用FME生成Delaunay三角形
目录 背景与应用场景 前置条件与数据准备 操作流程详解 3.1 点要素矢量化3.2 设置坐标系3.3 生成Delaunay三角形...
三款实用工具推荐:图片无损放大+音乐格式转换+音视频格式转换!
在这个数字化时代,总有些工具能让人眼前一亮。今天李师傅大家精选三款实用工具,从图片优化到格式转换,解决日常创作中的痛点,让数字生活更得心应手。 在这个数字化时代,总有些工具能让人眼前一亮。今天为大家精选三款…...
文本预处理(NLTK)
1. 自然语言处理基础概念 1.1 什么是自然语言处理 自然语言处理( Natural Language Processing, NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于…...
泰迪杯实战案例学习资料:生产线的故障自动识别和人员配置优化
(西南石油大学,第十二届泰迪杯特等奖案例) (深度扩展版) 一、案例背景与目标 1.1 问题背景 在制造业中,生产线设备故障可能导致以下问题: 停机损失:每小时停机成本可达数万元(视行业而定)。 资源浪费:人工排班不合理导致高技能员工闲置或低效分配。 安全隐患:未及…...
dijkstra
open_set是当前正在计算的节点; 每次从当前open_set集合中找出cost最小的节点进行计算更新:从open_set中去除该节点,保存到close_set中; 运动更新可以根据运动模型选择合适的节点运动方式; 【代价的计算方式是&…...
【SSH 端口转发】通过SSH端口转发实现访问远程服务器的 tensorboard
SSH 连接远程服务器时的命令: ssh -L 8001:localhost:8001 usrnameserverip-L: 这是指定进行本地端口转发的选项。也就是说,要将本地机器的一个端口通过 SSH 隧道转发到远程服务器上的某个服务。 8001:localhost:8001: 第一个 80…...
w308汽车销售系统的设计与实现
🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文…...
Spring 学习笔记之 @Transactional 异常不回滚汇总
使用springboot时,只要引入spring-jdbc/jpa相关的依赖后,在想要启用事务的方法上加上Transactional注解就能开启事务,碰到异常就能自动回滚。大大的提高了编码的便捷性性,同时也不侵入代码,保持了代码的简洁性。 默认情…...
Java 自定义TCP协议:【特点编码字符串<=>字节<=>特点编码16进制】16进制字符串和编码的转换 (各种编码通过字节向16进制的互转)| XOR计算
文章目录 引言I 各种编码通过字节向16进制的互转。字符串<=>字节<=>16进制 | Java验证微信小程序 JavaScript字符串转gb2312 字符编码,以16进制字符串传输。(接收蓝牙设备的信息,发送北斗终端消息)II xor校验码Java实现验证C# 实现引言 为了避免中文在传输过程…...
大模型的使用
以下是不同类型大模型及其适用场景: 对话模型 - 代表模型:GPT-3.5/4、Claude、LaMDA、ChatGLM等。 - 适用场景:客服机器人为用户解答常见问题,提供实时支持;个人助理帮助用户完成各种任务,如查询信息、设置…...
OSPF的不规则区域和特殊区域
目录 一、OSPF不规则区域类型 1、非骨干区域无法和骨干区域保持连通 2、骨干区域被分割 解决方案 1、使用虚连接 2、使用多进程双向重发布(路由引入) 二、特殊区域 1、STUB区域(末梢区域) 2、totally stub区域(…...
C++学习:六个月从基础到就业——STL:分配器与设计原理
C学习:六个月从基础到就业——STL:分配器与设计原理 本文是我C学习之旅系列的第三十篇技术文章,也是第二阶段"C进阶特性"的第九篇,主要介绍C STL中的分配器设计原理与实现。查看完整系列目录了解更多内容。 引言 在之前…...
QQMusic项目功能总结
QQMusic项目功能总结 一、核心功能分类 (一)界面交互功能 功能模块实现方式使用类(自定义/Qt库)核心类说明窗口布局Head区(图标、搜索框、控制按钮) Body区(左侧功能栏右侧页面区)…...
人形机器人:MCP与人形机器人的联系
MCP(Model Context Protocol)与人形机器人的结合,正在重构智能体与物理世界的交互范式。这种联系不仅体现在技术架构的深度融合,更体现在对机器人认知能力、协作模式和应用场景的全方位赋能。以下从技术整合、场景落地和未来趋势三…...
matplotlib画图工具使用(1) 画折线统计图python代码
Python 画折线统计图(line chart)最常用的是 matplotlib。 最基本的折线图代码如下: import matplotlib.pyplot as plt# 假设这是你的数据 x [1, 2, 3, 4, 5] y [2, 3, 5, 7, 11]# 创建折线图 plt.plot(x, y, markero) # markero 是在点…...
神经网络与深度学习第四章-前馈神经网络
前馈神经网络 在本章中,我们主要关注采用误差反向传播来进行学习的神经网络。 4.1 神经元 神经元是构成神经网络的基本单元。主要是模拟生物神经元的结构和特性,接收一组输入信号并产生输出。 现代神经元中的激活函数通常要求是连续可导的函数。 净输…...
TC3xx学习笔记-UCB BMHD使用详解(一)
文章目录 前言UCB BMHDPINDISHWCFGLSENA0-3LBISTENACHSWENABMHDIDSTADCRCBMHDCRCBMHD_NPW0-7 总结 前言 AURIX Tc系列Mcu启动过程,必须要了解BMHD,本文详细介绍BMHD的定义及使用过程 UCB BMHD UCB表示User Configuration Block,UCB是Dflash,存储的地址…...
C语言 函数递归
目录 1.什么是递归 2.递归的限制条件 3.递归的举例 1.递归与迭代 1.递归是什么 递归是学习C语言函数绕不开的一个话题,那什么是递归呢? 递归其实是一种解决问题的方法,在C语言中,递归就是函数自己调用自己。 写一个史上最简单的C语言…...