递归函数的基本思想 (递归函数的基本情形是什么)

本文目录导航:

递归函数的基本思想

递归函数的基本思想如下:

递归函数的基本思想 (递归函数的基本情形是什么)

递归就是方法自己调用自己 递归特点: 有临界点 当一个方法执行完毕,或者遇到retrun,就会返回,函数就是出栈。

待求解问题的解 输入变量x的函数f(x),通过寻找函数g( ), 使得f(x) = g(f(x-1))。

且已知f(0)的值, 就可以通过f(0)和g( )求出f(x)的值。

扩展到多个输入变量x, y, z等, x-1也可以推广到 x - x1 , 只要递归朝着 “出口” 的方向即可。

把一个问题划分成一组子问题, 依次对这些子问题求解。

子问题之间是横向的, 同类的关系 递归: 把一个问题逐级分解成子问题。

子问题与原问题之间是纵向的, 同类的关系。

语法形式上: 在一个函数的运行过程中, 调用这个函数自己。

直接调用: 在fun()中直接执行fun()。

间接调用: 在fun1()中执行fun2(); 在fun2()中又执行fun1() 递归与枚举的区别。

递归的三个要点:

递归式:如何将原问题划分成子问题。

递归出口: 递归终止的条件, 即最小子问题的求解,可以允许多个出口 。

界函数: 问题规模变化的函数, 它保证递归的规模向出口条件靠拢,求阶乘的递归程序。

递归的基本思想是什么?

递归的基本思想是:自己调用自己。

递归是一种常见的解决问题的方法,即把问题逐渐简单化。

递归的基本思想就是“自己调用自己”,一个使用递归技术的方法将会直接或者间接的调用自己。

利用递归可以用简单的程序来解决一些复杂的问题。

比如:斐波那契数列的计算、汉诺塔、快排等问题。

递归调用会占用大量的系统堆栈,内存耗用多,在递归调用层次多时速度要比循环慢的多,所以在使用递归时要慎重。

简单地说,递归是重复调用函数自身实现循环。

迭代是函数内某段代码实现循环,而迭代与普通循环的区别是:循环代码中参与运算的变量同时是保存结果的变量,当前保存的结果作为下一次循环计算的初始值。

递归循环中,遇到满足终止条件的情况时逐层返回来结束。

迭代则使用计数器结束循环。

当然很多情况都是多种循环混合采用,这要根据具体需求。

递归的例子,比如给定一个整数数组,采用折半查询返回指定值在数组中的索引,假设数组已排序,为方便描述,假设元素都为正数,数组长度为2的整数倍。

对递归的理解

递归和循环是等价的,只不过实现方式不同而已。

一个等价的例子求1到10累加:循环 用For循环在循环体内做累加计算,终止条件是 控制变量10递归 累加计算和增1计算做递归公式,递归条件 控制变量=10递归的优缺点递归的代码简洁复杂度低 递归在处理复杂嵌套时,具备了循环无法比拟的优势。

递归的内存使用效率略高 递归使用栈的空间,随着循环的进行,前面递归函数不能结束后面的递归函数不断增加,栈空间增加,但到后期,递归函数开始完结,栈空间会迅速释放。

相比之下,循环体主要使用堆空间,循环过程中堆空间不断增加,循环结束后不会立即释放堆空间。

递归容易引起栈内存的溢出 由于递归函数是动态申请栈空间,通过编译和静态代码解析,无法发现内存的溢出的问题。

因此,递归对程序员的技术能力要求较高。

理论上递归的执行速度略快 这是由于栈的读写速度要高于堆。

你可能想看:
« 上一篇
下一篇 »

相关推荐

FreeBasic:强大免费开源的64位basic编译器及应用优势

2025年05月10日

82阅读

脊柱侧弯矫正方法大盘点:运动康复、支具矫正等多种方式

2025年05月09日

87阅读

如何在winForm标题栏去掉标题文字且任务栏图标正常显示

2025年05月09日

86阅读

十一黄金周促销广告词大全,国庆购物狂欢等你来

2025年05月09日

78阅读

关闭快速编辑模式及插入模式,设置控制台指定文字颜色举例

2025年05月09日

63阅读

黄金搭档低糖高钙饮品包装及成分功效全解析,适合人群要知晓

2025年05月09日

91阅读