
[recursion] 按照某一包含有限步数的法则或公式对一个或多个前面的元素进行运算,以确定一系列元素(如数或函数)的方法
递归和递推是两种不同的问题解决思路,在数学和计算机科学中均有广泛应用:
一、递归(Recursion) 核心特征:自顶向下分解问题,通过函数自我调用来实现 • 将大问题分解为结构相同的小问题 • 必须存在终止条件(base case) • 典型示例:阶乘计算(n! = n × (n-1)!,终止条件为0! = 1) • 优势:代码简洁,适合树状结构问题 • 缺点:可能产生栈溢出,时间复杂度较高
二、递推(Recurrence) 核心特征:自底向上构建解,通过迭代关系式推进 • 基于初始条件和递推公式逐步计算 • 无需函数自我调用,通常用循环实现 • 典型示例:斐波那契数列(F(n) = F(n-1) + F(n-2),初始F(0)=0,F(1)=1) • 优势:内存占用少,执行效率高 • 缺点:需要明确推导步骤顺序
关键区别:
例如计算斐波那契数列:
理解这两种方法的本质区别,有助于根据具体问题选择更优的解决方案。
傲慢少礼百中百发长白山昌庭敕号侈骄穿綳楚嶂丹采打嘴巴低低鼎器贰宗繁丝急管法事封甸风中秉烛干瘠光藻锅汤悍强鸿罿逅适江稻交卸解围绩纺金蜩金颜攫为己有开壶拷掠快性悃质賫子料气蝼螾瓢虫清漪启事全书诠索染练肉脯伤食纱罩神山霜奁暑伏舒齐熟献悚异糖水亭刃投案瓦合戊方污泽显弹橡皮圈