可视化

1. Introduction

这个可视化能展示递归算法的递归树。
但是你也可以看到动态规划算法的有向无环图(DAG)的可视化

2. 递归树/ 有向无环图

这里是递归树/有向无环图的可视化区域。
请注意由于过多的组合变化,当数字很大时递归树很难可视化。
对于递归有向无环图来说,当有重复的子问题时,很难减少边的重叠。

3. 例

选择一个例子,或者写下你自己的代码
注意可视化可以运行任何javascript的代码,包括错误的代码,所以请格外注意
点击运行来观看你所写代码的可视化!

4. 阶乘例子

这个阶乘的例子计算了数字 的阶乘
这是最简单的且能被重新写成迭代版本的(尾)递归函数之一

5. 斐波那契例子

斐波那契的例子计算出了第N个斐波那契数。
与阶乘的例子不同的是这次每次递归都调用了两个子问题。当理解了动态规划后它也可以写成迭代的形式。斐波那契递归树(和有向无环图)是经常用来展示递归基本思路的例子。

6. 卡塔兰数例子

卡塔兰数的例子利用了递归来计算第N个卡塔兰数

7. GCD示例

GCD示例递归地计算两个数字A和B的最大公约数。

8. N 选择 K

N 选择 K 计算了二项系数C(NK)

9. 区间求和例子

数组指定区间求和的例子计算了S(l,r) 的最大值,给定 S(l,r) = a1[l] + a1[l+1] + ... + a1[r],且 1≤l≤r≤i。

10. 背包问题

背包例子解决了0/1背包问题:有一个最大承重量为w的背包,第i件物品的价值为a1[i],第i件物品的重量为a2[i],将物品装入背包,求解背包内最大的价值总和可以为多少?

11. 硬币找零例子

硬币找零例子解决了硬币找零问题:给定一序列硬币的面值 a1,最少需要多少硬币数来得到面值v?

12. 最长上升子序列例子

最长上升子序列例子解决了最长上升子序列的问题:给定一个序列 a1,求出最长上升子序列的长度?

13. 旅行商例子

旅行商例子利用了小图解决了旅行商问题:从城市 0 出发,求解访问每一座城市一次并回到起始城市 0 的最短回路。城市 i 和城市 j 之间的距离标注为a1[i][j]。

14. 配对问题

配对问题计算在一张以邻接矩阵a1呈现的小图上的最大的匹配对数。