30 秒了解 Recursive

如果对你有帮助,欢迎送上一个 GitHub ⭐!
你的赞助将帮助我们支持更多语言,比如 Java 和 C++。

Tip 1. 原样粘贴你的算法解答

把你的解答代码连同函数一起粘贴进来即可。注释没问题,参数会自动识别。填入输入值后点击运行。

输入示例

// 将数组按升序排序并返回
//
// 解题思路
// 比较相邻两个元素,将较大的元素往后移。
// 每完成一轮,最大值就固定到末尾。
// 时间复杂度: O(n^2)

function bubbleSort(arr) {
  const n = arr.length;
  for (let i = 0; i < n - 1; i++) {
    for (let j = 0; j < n - 1 - i; j++) {
      // 如果前面更大则交换
      if (arr[j] > arr[j + 1]) {
        const temp = arr[j];
        arr[j] = arr[j + 1];
        arr[j + 1] = temp;
      }
    }
  }
  return arr;
}

实时预览

试试按下按钮。在实际应用中,你可以修改输入值。

Tip 2. 没有函数的纯代码也可以

没有外层函数包裹的代码也能正常运行。无需参数输入,直接点击 ▶ 运行即可。

const arr = [5, 3, 8, 1, 2];
let total = 0;
for (let i = 0; i < arr.length; i++) {
  total += arr[i];
}
console.log(total);

Tip 3. 嵌入到博客或 Notion

你可以把执行视图嵌入到博客、Notion、Obsidian,或任何支持 iframe 的地方。点击执行视图顶部的 Embed 按钮即可复制 iframe 代码。还可以调整高度,在 Notion 中只需使用 /embed 并粘贴 URL 即可。

<iframe src="https://recursive.oilater.com/embed?preset=bubble-sort"
  width="100%" height="600"
  style="border:none;border-radius:8px;" />

Tip 4. 支持 Python 和 JavaScript

  • Python 可自由使用标准库(collections、functools、itertools 等)。
  • JavaScript / TypeScript 类型会自动剥离。Math、JSON、Array 方法等内置 API 全部可用。

Tip 5. 尚不支持

  • 暂不支持异步代码(setTimeout、Promise、async/await)。
  • 暂不支持 JavaScript 的 class 语法。
  • Python 仅支持标准库。不支持 numpy、pandas 等。
  • 输入过大可能导致执行中断。请保持测试规模合理。
  • Java、C、C++ 等语言无法直接在浏览器中运行,需要单独的服务器。由于该项目目前在无服务器环境下运行,因此暂不支持这些语言。
  • 不支持多行输入(例如算法竞赛网站那种 stdin 形式的输入)。值只能通过函数参数传递。

Tip 6. 我们随时欢迎反馈

随时欢迎功能建议和 bug 反馈。请到 GitHub Issues 留言。也欢迎直接通过 PR 贡献代码。

更新日志

我们根据 GitHub Issues 持续改进功能。查看所有 issues →

  • 将函数调用可视化为栈帧
  • 递归调用树支持鼠标拖拽平移
  • 支持 Python
  • 支持嵌入(博客、Notion、Obsidian 等)
  • 支持 i18n(韩语 / 英语)
  • 新增文档页面