🧮 WPS 递归 | 乘法口诀表:逐一循环一键生成!!!

一、效果展示

只需要在单个单元格输入公式,回车直接生成 1~9 完整乘法口诀表,无需下拉、无需辅助列,纯函数依托递归回溯逻辑自动溢出,兼顾实用性与函数学习价值。

表格

输入公式

自动生成结果

=LET(...)

1×1=1

2×1=2 2×2=4

3×1=3 3×2=6 3×3=9

……

9×1=9………… …… …… …… …… …… …… …… 9×9=81


二、核心公式(直接复制可用)

excel

=LET(

f, LAMBDA(a, a & "×" & SEQUENCE(, a) & "=" & a * SEQUENCE(, a)),

TT, LAMBDA(a, IF(a = 1, f(a), IFNA(VSTACK(TT(a - 1), f(a)), ""))),

TT(9))


三、公式逐行拆解

1. 外层 LET 函数:变量与自定义函数封装

excel

=LET(

f,LAMBDA(...),

TT,LAMBDA(...),

TT(9))

  • LET 函数:WPS 动态数组函数核心之一,用于封装变量、自定义函数,减少公式冗余,提升运算效率,避免重复计算,此处用于定义两个核心自定义函数并启动递归。

  • 核心作用:将f(行生成函数)和TT(递归回溯函数)封装,最终通过TT(9)启动整个递归运算流程,实现从 1 到 9 的乘法表生成。


2. f 函数:单行乘法口诀生成器

excel

LAMBDA(a, a & "×" & SEQUENCE(, a) & "=" & a * SEQUENCE(, a))

  • LAMBDA 函数:无名称自定义函数,用于构建可复用的运算逻辑,此处作为 “单行生成单元”,接收参数a(当前行数),输出该行完整乘法口诀。

  • 关键参数解析:

  • a:递归过程中传递的 “当前行数”,是递归回溯的核心变量,从 9 逐步回溯至 1,再正向堆叠结果。

  • SEQUENCE(, a):动态数组函数,生成横向 1 维数组{1,2,...,a},作为当前行的乘数序列,是实现 “一行多组口诀” 的核心。

  • 文本拼接逻辑:通过&运算符,将 “行数a”“× 符号”“乘数序列”“= 符号”“乘积结果” 拼接为标准乘法口诀格式,本质是数组文本拼接运算

  • 示例:当a=3时,SEQUENCE(,3)生成{1,2,3},最终输出{"3×1=3","3×2=6","3×3=9"},即第三行完整口诀。


3. TT 函数:递归回溯核心

excel

LAMBDA(a, IF(a = 1, f(a), IFNA(VSTACK(TT(a - 1), f(a)), "")))

这是整个公式的核心,依托递归回溯思想实现从 1 到 9 的完整口诀堆叠,拆解如下:

  • 递归回溯定义:通过 LAMBDA 函数自我调用(递归),从目标值9逐步回溯至终止条件a=1,再从终止条件正向堆叠所有结果,本质是 “分治思想 + 回溯拼接”。

  • 递归终止条件:IF(a = 1, f(a), ...),当回溯到a=1时,停止递归,调用f(1)生成第一行口诀(递归出口),避免无限递归报错。

  • 递归回溯过程:IF(a≠1, IFNA(VSTACK(TT(a - 1), f(a)), ""))

  • TT(a - 1):递归调用自身,将参数a减 1,实现 “回溯”(从 9→8→7→...→1),逐步拆解问题,获取 1~a-1 行的口诀结果。

  • VSTACK函数:垂直堆叠数组函数,将上一轮递归获取的 “1~a-1 行口诀” 与当前行f(a)生成的口诀垂直堆叠,实现 “正向拼接”。

  • IFNA(..., ""):容错处理,捕获递归过程中可能出现的#N/A错误(如数组堆叠异常),确保公式稳定运行,提升鲁棒性。


四、完整运行过程明细(递归回溯 + 正向堆叠)

TT(9)为例,完整拆解递归回溯的每一步,结合专业术语说明,清晰呈现公式运行逻辑:

第一步:递归回溯阶段(从 9 拆解至 1,分治拆解问题)

第 1 层递归:调用 TT (9)

  • 此时a=9 ≠ 1,不满足终止条件,执行VSTACK(TT(8), f(9))

  • 核心动作:触发递归回溯,先调用TT(8)拆解 “生成 1~8 行口诀” 的子问题,再生成第 9 行口诀,等待子问题结果后进行堆叠。

第 2 层递归:调用 TT (8)

  • a=8 ≠ 1,执行VSTACK(TT(7), f(8))

  • 核心动作:继续回溯,拆解为 “生成 1~7 行口诀”+“生成第 8 行口诀”,延续分治思想。

第 3 层:调用 TT (7) → 执行VSTACK(TT(6), f(7))

第 4 层:调用 TT (6) → 执行VSTACK(TT(5), f(6))

第 5 层:调用 TT (5) → 执行VSTACK(TT(4), f(5))

第 6 层:调用 TT (4) → 执行VSTACK(TT(3), f(4))

第 7 层:调用 TT (3) → 执行VSTACK(TT(2), f(3))

第 8 层:调用 TT (2) → 执行VSTACK(TT(1), f(2))

第 9 层:调用 TT (1)(递归出口)

  • a=1,满足终止条件,停止回溯,调用f(1)生成第一行口诀:{"1×1=1"}

  • 核心意义:递归回溯的 “终止节点”,生成最基础的子问题结果,为正向堆叠提供起始数据。

第二步:正向堆叠阶段(从 1 叠加至 9,回溯结果拼接)

递归回溯完成后,从终止节点TT(1)开始,逐层向上返回结果,通过VSTACK完成垂直堆叠,形成完整乘法表:

  1. TT(1) 返回结果:{"1×1=1"}(第一行)

  1. TT(2) 堆叠:VSTACK(TT(1), f(2)) → 第一行 + 第二行({"2×1=2","2×2=4"}

  1. TT(3) 堆叠:VSTACK(TT(2), f(3)) → 前两行 + 第三行

  1. …… 以此类推,逐层向上堆叠……

  1. TT(9) 最终堆叠:VSTACK(TT(8), f(9)) → 1~8 行 + 第 9 行,形成完整 1~9 乘法表,通过动态数组自动溢出显示。

关键总结

整个运行过程,本质是递归回溯的分治思想:将 “生成 9 行乘法表” 的大问题,拆解为 “生成 1~8 行”“生成 1~7 行”……“生成 1 行” 的小问题,逐一解决小问题后,通过VSTACK正向拼接,最终得到完整结果,无需人工干预,实现 “一键生成”。


五、使用步骤

  1. 选单元格:选择一片空白区域的首个单元格(建议 A1),预留足够空间(避免溢出错误)。

  1. 输公式:复制文中完整核心公式,粘贴到选中单元格,按回车确认。

  1. 出结果:公式自动执行递归回溯与数组堆叠,一键生成 1~9 完整乘法表,无需下拉填充、无需辅助列。

灵活调整

想生成 12 阶、15 阶乘法表,只需将公式末尾的TT(9)改为TT(12)TT(15),递归回溯逻辑会自动适配行数,生成对应阶数的乘法表。


六、关键知识点 & 避坑指南

适用版本

  • 必须是 WPS 365 / WPS 2021 及以上版本(需支持动态数组函数簇:LAMBDA、VSTACK、SEQUENCE、LET)。

  • 低版本 WPS/Excel(如 Excel 2019 及以下)不支持 LAMBDA 和动态数组,公式会直接报错。

核心原理复盘

  1. 递归回溯:通过 LAMBDA 自我调用,实现 “从大到小拆解、从小到大拼接”,是实现 “一键生成” 的核心逻辑。

  1. 动态数组运算:SEQUENCE 生成横向乘数数组,VSTACK 实现垂直堆叠,LET 封装函数减少冗余,三者结合实现高效运算。

  1. 文本与数组拼接:通过&运算符,将数值、符号、运算结果拼接为标准口诀格式,兼顾实用性与可读性。

⚠️ 避坑注意事项

  1. 溢出错误(#SPILL!):单元格空间不足,需清空公式所在单元格下方、右侧的空白区域,预留足够显示空间。

  1. 递归报错(#NUM!):若修改TT(9)为过大数值(如TT(20)),会导致递归层数过多、计算量过载,出现数值错误,建议控制在 15 以内。

  1. 函数兼容性:公式中VSTACK不可替换为HSTACK(HSTACK 为横向堆叠,会导致口诀横向排列,无法形成表格)。

  1. 空值容错:IFNA函数不可省略,否则递归过程中若出现数组异常,会导致整个公式报错,影响运行稳定性。


七、拓展用法(进阶延伸)

  1. 生成加法表:将公式中所有*(乘法运算符)改为+(加法运算符),递归回溯逻辑不变,一键生成 1~9 加法表。

  1. 生成除法表:将*改为/(除法运算符),调整拼接格式(如a & "÷" & SEQUENCE(,a) & "=" & a/SEQUENCE(,a)),生成除法表。

  1. 竖排展示:在公式外层嵌套TOCOL函数(=TOCOL(LET(...))),将横向排列的每行口诀,转为垂直一列显示,适配不同展示需求。

  1. 自定义阶数:结合单元格引用,将TT(9)改为TT(K1),在 K1 单元格输入目标阶数,实现 “动态调整阶数”,无需修改公式。


八、总结

该公式的核心价值,在于用纯函数实现递归回溯逻辑,无需 VBA、无需辅助操作,仅用一个单元格就完成九九乘法表的生成,既适合日常办公、教学演示,也适合学习 LAMBDA 递归、动态数组、分治思想等高阶函数知识点。

递归回溯是 Excel/WPS 函数进阶的核心难点,掌握这个公式的运行逻辑,能快速理解递归的 “拆解 - 回溯 - 拼接” 思路,举一反三写出更多 “一键生成” 类的高效公式,提升办公效率与函数功底!

浙江省
浏览 179
收藏
7
分享
7 +1
10
+1
全部评论 10
 
nevermore
看看腿
· 福建省
回复
 
懒得批爆
生成乘法表的公式那需要那么麻烦,2024年的时候就这么生成了 =MAKEARRAY(9,9,LAMBDA(x,y,IF(x>=y,y&"*"&x&"="&x*y,"")))
· 四川省
回复
拾光漫行
可能主要是XB递归吧
· 重庆
回复
 
腿腿
没人看
· 浙江省
回复