可视化

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],将物品装入背包,求解背包内最大的价值总和可以为多少?