Vue3步骤条(Steps)组件:从零构建与深度定制指南
2026/5/15 23:32:46
这是根据一个函数在递归时,会派生出几个“分身”来分类的。
A. 线性递归 (Linear Recursion)
voidlinear(int n){if(n<=0)return;// 只调用一次自己linear(n-1);}B. 树形递归 (Tree Recursion)
*特点:函数在递归阶段,调用了多次(通常是两次或以上)自己。
*长相:
voidtree(int n){if(n<=1)return;// 调用两次自己,这就分叉了!tree(n-1);tree(n-2);}这是根据函数调用的“人际关系”来分类的。
A. 直接递归 (Direct Recursion)
voidA(){// ...A();// 我直接call我自己}B. 间接递归 (Indirect Recursion)
voidA(){// ...B();// 我让兄弟帮我干}voidB(){// ...A();// 兄弟又把活扔回给我}这是你提到的尾递归所在的分类,也是性能优化的关键。
A. 头递归 (Head Recursion)
inthead(int n){if(n==0)return0;// 先递归下去,等回来之后,还要做 +n 的操作returnhead(n-1)+n;}B. 尾递归 (Tail Recursion) —— 你提到的那位
inttail(int n,int acc){if(n==0)returnacc;// 计算已经在参数里做完了(acc + n),这里只是单纯的跳转returntail(n-1,acc+n);}| 分类维度 | 类型 | 关键特征 |
|---|---|---|
| 调用路数 | 线性递归 | 一层只调一次自己 |
| 树形递归 | 一层调多次自己 | |
| 调用关系 | 直接递归 | 自己调自己 |
| 间接递归 | 你调我,我调你 | |
| 调用位置 | 头递归 | 调完还要算 |
| 尾递归 | 调完直接返 |