【计算机科学的数学基础】递归

递归

递归的思维方式

找出递归结构(借助第 n − 1 n-1 n−1步来解决第 n n n步) → \rightarrow →建立递推公式

递归和归纳,只是方向不同。"从一般性前提退出个别性结论"的是递归的思想。而"从个别性前提推出一般性结论"的是归纳的思想。

阶乘

n ! = { 1 , ( n = 0 时 ) n × ( n − 1 ) ! , ( n = 1 , 2 , 3 , ⋯ 时 ) n!=\begin{cases} 1, & (n=0时) \\ n \times (n-1)!, & (n=1,2,3, \cdots 时) \end{cases} n!={1,n×(n−1)!,(n=0时)(n=1,2,3,⋯时)

上面这个定义之所以能成立,下面两个方面缺一不可:

  • 阶乘 n ! n! n!由阶乘 ( n − 1 ) ! (n-1)! (n−1)!来定义
  • n = 0 n=0 n=0时的阶乘结果确定为1

斐波那契数列

问:有一种动物,它出生2天后就开始以每天1只的速度繁殖后代。假设在第1天有1只这样的动物(该动物刚出生,从第3天起繁殖后代)。那么到第 n n n天,这样的动物共有多少只?

解:在第 n n n天,

  • 第 n − 1 n-1 n−1天出生的动物,在第 n n n天都还活着
  • 第 n − 2 n-2 n−2天以前出生的动物,在第 n n n天会繁殖1个后代

若设第 n n n天的动物总是为 F ( n ) F(n) F(n),则
F ( n ) = { 0 , ( n = 0 时 ) 1 , ( n = 1 时 ) F ( n − 1 ) + F ( n − 2 ) , ( n = 2 , 3 , 4 , ⋯ 时 ) F(n)=\begin{cases} 0, & (n=0时) \\ 1, & (n=1时) \\ F(n-1)+F(n-2), & (n=2, 3, 4, \cdots 时) \end{cases} F(n)=⎩ ⎨ ⎧0,1,F(n−1)+F(n−2),(n=0时)(n=1时)(n=2,3,4,⋯时)

将结果排列成数列可得: 0 , 1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 , 55 , 89 , ⋯ 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, \cdots 0,1,1,2,3,5,8,13,21,34,55,89,⋯

即斐波那契数列

递归的其他例子

杨辉三角

其实杨辉三角就是组合数:

即: C n k = C n − 1 k − 1 + C n − 1 k C_n^k=C_{n-1}^{k-1}+C_{n-1}^{k} Cnk=Cn−1k−1+Cn−1k

谢尔平斯基三角形

它其实就是将杨辉三角中的奇数和偶数分别上黑白2种颜色的结果:

相关推荐
sbjdhjd13 分钟前
AI产业周度动态:从“更强模型”走向“可执行、可治理、可计价”的系统竞争 (2026年10月19日—10月25日)
人工智能·笔记·ai·开源·gemini·信息差·claude code
程序员清风1 小时前
算法题中的边界条件、测试与调试
开发语言·算法·kotlin
炘爚1 小时前
数据结构算法总结
数据结构·python·算法
ss2731 小时前
AI时代首先数据库-PostgreSQL实战笔记 27 PostgreSQL数据写入与读取流程解析
数据库·笔记·postgresql
Dageno_AI2 小时前
ChatGPT 不再引用 Reddit 之后,还值得在 Reddit 上做 AI 可见度吗?
算法
hetao17338372 小时前
2026-10-25 hetao1733837 的刷题记录
c++·算法
Jsundoku2 小时前
第七章 机器学习 -- 其他经典算法
人工智能·算法·机器学习
深圳老胡2 小时前
压力检测空吸功能硬件方案全解析:主流压力传感器品牌与实现路径
笔记·单片机·代码规范
程序猿追2 小时前
返回 null 不一定入队成功:鸿蒙 KMP上的并发优先队列观察笔记
笔记·华为·harmonyos·kmp
进击的丸子2 小时前
基于 ArcFace SDK 的跨平台人脸特征值下发、同步以及存储方案
后端·算法·代码规范