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

推荐订阅源

月光博客
月光博客
Martin Fowler
Martin Fowler
博客园_首页
量子位
T
Tailwind CSS Blog
博客园 - Franky
G
Google Developers Blog
D
DataBreaches.Net
Vercel News
Vercel News
B
Blog
Recent Announcements
Recent Announcements
S
SegmentFault 最新的问题
M
MIT News - Artificial intelligence
爱范儿
爱范儿
博客园 - 【当耐特】
The Cloudflare Blog
H
Help Net Security
云风的 BLOG
云风的 BLOG
P
Proofpoint News Feed
C
Check Point Blog
有赞技术团队
有赞技术团队
Microsoft Security Blog
Microsoft Security Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

qlAD 的技术笔记

2026 年 6 月 7 日 -- 我有社交恐惧症,恐惧外面到处雷电风雨声(大学生活记录) 手把手带你实现哈希表(C/C++ 数据结构) 手把手带你实现图结构(C/C++ 数据结构) 手把手带你实现二叉树(C/C++ 数据结构) 手把手带你实现栈和队列(C/C++ 数据结构) 手把手带你实现单/双链表(C/C++ 数据结构) 手把手带你实现动态数组(C/C++ 数据结构) 2026 年 1 月 2 日 -- 我不怕冷,因为我内心炽热 【2025 年度总结】(大学生活记录) 2025 年 12 月 2 日 -- 省电模式:大一 100 天耗电日志(大学生活记录) 蓝桥杯备赛第一期 —— 枚举与模拟 2025 年 11 月 3 日 -- 用爱发电、大爱无私(大学生活记录) 使用循环嵌套输出规则图形找规律讲解(嵌套循环-图形输出) 2025 年 10 月 1 日 -- 二字开头第一年的生日记录及感悟随笔(大学生活记录) Python 初级 04 -- 目前为止 Python 中你们做题可能会遇到的问题以及七七八八 2025 年 9 月 24 日 -- 开学后的第一课及军训汇演(大学生活记录) Python 初级 03 -- 程序设计的三种结构之选择结构和循环结构 Python 初级 02 -- 基础的数据类型和输入输出 2025 年 9 月 17 日 -- 大连 2025 国际大体联足球世界杯(大学生活记录) Python 初级 01 -- 初识编程、理解计算机语言及程序运行方式 适合大一新生学习编程的前一课 -- 编程先导(编程的本质) 2025 年 9 月 12 日 -- 三天军训感受以及一些七七八八(大学生活记录) 2025 年 9 月 9 日 -- 体检、军训前的准备(大学生活记录) 适合大一新生的计算机基础知识 -- 个人认为足够版 2025 年 9 月 7 日 -- 既来之、则安之(大学生活记录) C++ 程序的内存布局 —— 代码区、全局/静态区、栈区和堆区 联想小新 pro 16 2025 开箱记录:跳过联网、office 激活、更换 win 11 专业版 R 语言中的数学函数 计算机软件著作权申请过程记录 从聚类到回归:用 Python 解析鸢尾花数据集的完整数据科学流程 条件概率、全概率与贝叶斯公式 —— 一篇文章带你死磕概率公式
第00期 | 环境搭建 & 递归 (一) | 基本数列递归
qlAD · 2024-01-10 · via qlAD 的技术笔记

cover

在 B 站上偶然看到了这个系列 “从 0 开始的 C++ 算法课” ,感觉很适合入门,于是就跟着视频学习记录了一下。

原系列视频作者链接【从 0 开始的 C++算法课】第 00 期 | 环境搭建 & 递归 (一) | 基本数列递归

需求:使用递归方式求解等差数列 1 4 7 10 13 … 第 n 项的值,要求输入 n 输出第 n 项的值

首先定义函数 f ,输入的参数为整数 n ,对于这个等差数列返回结果依然为整数,所以返回结果为整数 res

然后我们调用这个函数本身求出 res 的值,若输入的参数为 6 则函数计算流程如下

可以看到整个过程是依次往前计算,但是我们知道数列没有第 0 项,因此递归函数不能没有限制

递归需要有起始项,避免无限制递归,因此需要手动设置 n = 1 时的 res 值

if (n == 1){
                res = 1;
}
else{
                res = f(n-1)+3;
}

记得提前定义 res

完整代码如下

#include <stdio.h>

int f(int n)
{
    int res;
    if (n == 1)
    {
        res = 1;
    }
    else
    {
        res = f(n - 1) + 3;
    }
    return res;
}

int main()
{
    int n;
    printf("Please enter a value for 'n': ");
    scanf("%d", &n);
    printf("The value of the %d item is: %d", n, f(n));
    return 0;
}

作业

题 1

#include <stdio.h>

int f(int n)
{
    int res;
    if (n == 1)
    {
        res = 2;
    }
    else
    {
        res = f(n - 1) * 2;
    }
    return res;
}

int main()
{
    int n;
    printf("Please enter a value for 'n': ");
    scanf("%d", &n);
    printf("The value of the %d item is: %d", n, f(n));
    return 0;
}

题 2

#include <stdio.h>

int f(int n)
{
    int res;
    if (n == 0 || n == 1)
    {
        res = 1;
    }
    else
    {
        res = f(n - 1) * n;
        }
    return res;
}

int main()
{
    int n;
    printf("Please enter a value for 'n': ");
    scanf("%d", &n);
    printf("The factorial of %d is: %d", n, f(n));
    return 0;
}