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

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
人人都是产品经理
人人都是产品经理
Cisco Talos Blog
Cisco Talos Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
V
V2EX
博客园 - 三生石上(FineUI控件)
Martin Fowler
Martin Fowler
WordPress大学
WordPress大学
D
Docker
S
SegmentFault 最新的问题
博客园 - 聂微东
美团技术团队
Apple Machine Learning Research
Apple Machine Learning Research
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Last Week in AI
Last Week in AI
M
MIT News - Artificial intelligence
F
Fortinet All Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The GitHub Blog
The GitHub Blog
GbyAI
GbyAI
L
LangChain Blog
Vercel News
Vercel News
博客园 - 叶小钗
MongoDB | Blog
MongoDB | Blog
Stack Overflow Blog
Stack Overflow Blog
H
Help Net Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
Engineering at Meta
Engineering at Meta
T
Threat Research - Cisco Blogs
T
Threatpost
Scott Helme
Scott Helme
T
Tailwind CSS Blog
Latest news
Latest news
Stack Overflow Blog
Stack Overflow Blog
Blog — PlanetScale
Blog — PlanetScale
The Register - Security
The Register - Security
罗磊的独立博客
P
Proofpoint News Feed
腾讯CDC
S
Schneier on Security
雷峰网
雷峰网
A
About on SuperTechFans
T
Tenable Blog
F
Full Disclosure
Cyberwarzone
Cyberwarzone
博客园_首页
有赞技术团队
有赞技术团队
K
Kaspersky official blog

文章列表

不改一行插件代码,实现消息优先级与阻断 洛玖定时任务系统 在 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