惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
O
OpenAI News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
Webroot Blog
Webroot Blog
GbyAI
GbyAI
S
SegmentFault 最新的问题
Cyberwarzone
Cyberwarzone
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
J
Java Code Geeks
Google DeepMind News
Google DeepMind News
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
博客园 - 【当耐特】
S
Secure Thoughts
酷 壳 – CoolShell
酷 壳 – CoolShell
AWS News Blog
AWS News Blog
Engineering at Meta
Engineering at Meta
S
Security Affairs
H
Help Net Security
Microsoft Security Blog
Microsoft Security Blog
D
DataBreaches.Net
云风的 BLOG
云风的 BLOG
Hugging Face - Blog
Hugging Face - Blog
Google DeepMind News
Google DeepMind News
Spread Privacy
Spread Privacy
T
Threatpost
Forbes - Security
Forbes - Security
C
Cisco Blogs
Scott Helme
Scott Helme
Attack and Defense Labs
Attack and Defense Labs
Simon Willison's Weblog
Simon Willison's Weblog
腾讯CDC
The Last Watchdog
The Last Watchdog
Cloudbric
Cloudbric
Last Week in AI
Last Week in AI
Recorded Future
Recorded Future
小众软件
小众软件
V
Vulnerabilities – Threatpost
美团技术团队
人人都是产品经理
人人都是产品经理
有赞技术团队
有赞技术团队
Apple Machine Learning Research
Apple Machine Learning Research
Hacker News - Newest:
Hacker News - Newest: "LLM"
I
Intezer
月光博客
月光博客
C
Cyber Attacks, Cyber Crime and Cyber Security
博客园 - 司徒正美
C
Cybersecurity and Infrastructure Security Agency CISA
Martin Fowler
Martin Fowler
博客园 - 聂微东

洛屿的小站

一种简单的卡尔曼滤波器设计 Cadence - 应律而动,落指成音 Zephyr - 聆风之息,为你而奏 不改一行插件代码,实现消息优先级与阻断 洛玖定时任务系统 在 butterfly 主题中添加首页点集动画(基于p2line项目) 你好,2026 stm32f4xx-ads1256驱动 stm32f4xx-ad9854并行驱动 主动式网站状态监测实现及其应用 右键菜单加入用Trae打开文件和文件夹 三角洲行动ID映射表 洛玖SDK说明 为网页文章开头添加原文连接 Hexo-Butterfly主题在主页添加GitHub贡献日历 Proteus中555定时器仿真问题 装饰器 洛玖开发日记 STS3032舵机获取力矩输出 kotlin网页前后端那些事 mspm0g3507-ad9850 奇怪的bug Paddle模型转PaddleLite 人工智能考核 构建一个yolov3网络 yolo和paddle模型常见输出参数 PaddleDetection 随便写的一些东西 实验室C语言第一次考核题目讲解及相关代码解读 C语言神经网络房价预测系统 C、C++数组,指针,指针数组,数组指针的区别 C、C++的大括号是必须的部分吗? C、C++预处理详解 C、C++其他关键字详解 C、C++存储类型关键字详解 C、C++控制语句关键字详解 C、C++数据类型关键字详解 C、C++关键字 C++药品管理系统 Bi-LSTM(Attention)的PyTorch实现 C语言实现波士顿房价预测 easy库的使用 edgeboardFZ3A相关问题 Predict.py的编写 Paddle环境搭建 百度Paddle模型训练 GMD09601-0.96OLED显示屏 【LeetCode 1617】统计子树中城市之间最大距离 STM32阵列按键 CH32(F10X F20X) 最短路 拓扑排序
C语言学习相关
洛屿 · 2023-03-12 · via 洛屿的小站

函数递归

函数递归,简单的理解就是,自己调用自己,直到遇到边界条件,停止递归

比如我们想实现一个阶乘函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
int n = 5;//求n!  这里是5!

//不使用递归,一种可行的做法是这样
int ans = 1;
for (int i = 1; i <= n; i++) {
ans *= i;
}
printf("%d! = %d", n, ans);

//使用递归
int _n(int x) {
if (x == 0)return 1;
return x * _n(x - 1);
}
printf("%d! = %d", n, _n(n));
/*
对于 _n(5),我们拆分一下它自己调用自己的过程↓
_n(5)
5 * _n(4)
4 * _n(3)
3 * _n(2)
2 * _n(1)
1 * _n(0)
1
达到边界,返回值为:5*4*3*2*1*1的 结果 (是,结果,不是这个计算式)
*/

define和const的区别

define:

  • define 是一个预处理指令,通常在 C 和 C++ 这类编程语言中使用。
  • 它用于定义编译时常量,这意味着在编译程序之前就将其值固定下来。
  • define 通常用于创建符号常量(宏常量),例如:
    1
    #define MAX_VALUE 100
  • 这样的定义会在编译时进行文本替换,将所有出现 MAX_VALUE 的地方替换为 100没有变量类型或内存分配
1
2
3
4
5
6
7
8
9
#include <stdio.h>

#define MAX_VALUE 100

int main() {
int x = MAX_VALUE;
printf("x的值是: %d\n", x);
return 0;
}

在这个示例中,MAX_VALUE 被定义为 100,并且在 main 函数中将其赋值给变量 x。当编译此代码时,预处理器会将 MAX_VALUE 替换为 100,因此在编译后的代码中,int x = MAX_VALUE; 实际上变成了 int x = 100;。这样,编译后的程序中不再存在 MAX_VALUE 符号,而是直接包含了 100 的值。

const:

  • const 是一种变量修饰符,通常在多种编程语言中使用,包括 C++, C#, JavaScript 等。
  • 它用于创建不可变的量,也就是常量。
  • const 变量在运行时具有类型和内存分配,通常存储在内存中,但其值无法被修改。
  • 例如,在 C++ 中:
    1
    const int MAX_VALUE = 100;
  • 这样的定义创建了一个整数常量,不能在后续代码中修改 MAX_VALUE 的值。
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>

const int MAX_VALUE = 100;

int main() {
int x = MAX_VALUE;
// 试图修改 MAX_VALUE,将导致编译错误
// MAX_VALUE = 200;
printf("x的值是: %d\n", x);
return 0;
}

在这个示例中,MAX_VALUE 被定义为整数常量 100,并且在 main 函数中将其赋值给变量 x

如果你尝试在后续代码中修改 MAX_VALUE 的值(例如,MAX_VALUE = 200;),编译器将报错,因为MAX_VALUE 被声明为const,这意味着它是不可修改的常量。

所以,使用const关键字可以确保变量的值在后续代码中不会被修改。


defineconst 的主要区别在于:

  • define 用于创建编译时常量,没有变量类型和内存分配,只是文本替换。
  • const 用于创建运行时常量,具有变量类型和内存分配,但其值无法被修改。

版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 洛屿的小站

打赏

  • wechat

    wechat

  • alipay

    alipay