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

递归

递归的思维方式

找出递归结构(借助第 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种颜色的结果:

相关推荐
求真求知的糖葫芦13 小时前
微波工程4.3节散射矩阵(S参数矩阵)参考平面移动与广义散射参数学习笔记(下)(自用)
学习·平面·矩阵·射频工程
求梦82013 小时前
【力扣hot100题】两两交换链表中的节点(25)
算法·leetcode·链表
passxgx13 小时前
12.1 均值、方差与概率
算法·均值算法·概率论
淮北49413 小时前
大模型学习(二、使用lora进行微调)
java·服务器·学习
andwhataboutit?13 小时前
RAG之语义块切分semantic chunking
学习
血小板要健康13 小时前
189.轮转数组,力扣
数据结构·算法·leetcode
chillxiaohan13 小时前
GO学习记录——动态创建测试http接口
学习·http·golang
项目申报小狂人13 小时前
CEC2024获胜算法mLSHADE-RL:具有重新启动和本地搜索机制的多操作员集成LSHADE
算法
Faker66363aaa13 小时前
YOLOv26人脸检测算法实现与优化_2
算法·yolo
蒟蒻的贤13 小时前
set和map
算法