可视化

1. Introduction

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

2. 递归树/ 有向无环图

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

3. 例

Select one of the examples, or write your own code.
Note that the visualization can run any javascript code, including malicious code, so please be careful.
Click the 'Run' button to start the visualization after you have selected or written a valid JavaScript code!

4. 阶乘例子

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

5. 斐波那契例子

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

6. 卡塔兰数例子

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

7. GCD example

The GCD example computes the Greatest Common Divisor of two numbers A and B recursively.

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