当前位置: 首页 > news >正文

深圳专业企业网站建新品发布会的目的

深圳专业企业网站建,新品发布会的目的,网页制作软件免费吗,免费网站源码引言 “递归” 一词是比较专业的计算机术语#xff0c;在现实生活中#xff0c;有一个更可爱的词——“套娃”。如果把“递归算法”叫做“套娃算法”#xff0c;或许可以减少一些恐惧程度。 套娃是有限的#xff0c;同样#xff0c;递归也是有限的#xff0c;这和我们经…引言 “递归” 一词是比较专业的计算机术语在现实生活中有一个更可爱的词——“套娃”。如果把“递归算法”叫做“套娃算法”或许可以减少一些恐惧程度。 套娃是有限的同样递归也是有限的这和我们经常在影视作品中看到的“无限嵌套循环”是有很大区别的递归一定存在某个可以返回的节点或条件否则就会出现栈溢出错误StackOverflowError。 其实“套娃”这个词已经足以概括递归算法的本质就是函数本身调用自身直到找到一个可以返回的条件再层层返回。参考《盗梦空间》《明日边缘》等。 递归算法一定可以改写成非递归的实现方式迭代。本篇博客将会展示一个简单的递归算法案例并介绍评估递归算法时间复杂度的 Master公式。 一、案例数组中的最大值 正如前面所说递归算法一定可以改写成迭代方式那么也就是说递归也属于迭代只不过它每次迭代的内容和上一次都是一致的。 假设一个数组如何用递归的方式找到其中的最大值 分析我们可以使用一个类似二分的思路将数组层层二分左侧找一个值右侧找一个值二者取一个最大。反复这样的过程。 完整代码 public class RecursionGetMax {public static int getMax(int[] arr, int L, int R) {if (arr null || arr.length 0)throw new IllegalArgumentException(参数异常);if (arr.length 1)return arr[0];// arr[L..R]范围上只有一个数直接返回base caseif (L R)return arr[L];// 2个元素以上int mid L ((R - L) 1);// 递归取得区域最大int leftMax getMax(arr, L, mid);int rightMax getMax(arr, mid 1, R);return Math.max(leftMax, rightMax);}public static void main(String[] args) {int[] arr {1, 2, 3, 5, 22, 5, 221, 4, 6, 43, 6, 21, 1, 3, 3, 9};int max getMax(arr, 0, arr.length - 1);System.out.println(max);} }注意这道题在设计时我们首先要有二分是思路基础然后我们思考要设计这样一个函数这个函数一定会接收一个需要查找的数组而仅仅传递数组的话那么就需要在方法中反复拷贝新数组显然空间复杂度太高因此不妨提供额外的两个指针方便我们选取数组上的数这样每次传递指针的值就可以避免每次传递截取的数组。 其次基础条件也是关键base case 是可以直接返回的条件即当 L R 时代表我们已经无法再继续二分因此可以直接返回这就是最终的返回节点如果没有这个条件那么递归将持续执行下去直到 StackOverflow 。因此在设计递归方法的时候一定要考虑好 base case。 二、递归的底层执行与逻辑分析方式 2.1 递归的底层实现 在系统中递归的实现是使用一个系统栈来完成的当方法执行到自身调用时系统会将“现场”保存到系统栈中擦除局部变量再重新跳到函数的开头继续执行。 例如一个数组 arr {4, 3, 8, 5, 7}初始 L 0R 4leftMax的返回值调用过程 2.2 逻辑分析方式 对于一个希望使用递归实现的方法我们并不需要每次都画出类似上图的栈结构来详细分析只需要画出逻辑递归图即可: 例如arr {5, 3, 4, 9}初始 L 0 R 3 三、递归算法的时间复杂度分析 由于递归算法是建立在一种不确定循环次数的情况下有点类似 do-while 循环因此在分析递归算法复杂度形式的时候只展开第一层的规模。 例如上述二分取值的方式就可以写成这样的时间消耗形式 T(N) a * T(N/b) T(N^d)其中 abd 都是常数 具体的值就是T(N) 2 * T(N/2) O(1) a 2, b 2, d 0。 Master 公式可以直接确定形如上面时间消耗形式的时间复杂度 如果 logb a d复杂度为O(N^d) 如果 logb a d复杂度为O(N^(logb a)) 如果 logb a d复杂度为O(N^d * logN) 其中logb a指的是以b为底 a 的对数。案例中的问题由于log2 d 1 0 因此时间复杂度就是 O(N^log2) O(N) 。
http://www.pierceye.com/news/225234/

相关文章:

  • 合肥专业网站优化手机界面设计素材
  • 台州网站建设惠店王烨烨
  • 工程建设比选公告固价方式网站wordpress html5的关系
  • 广州市网站建设 乾图信息科技潍坊市建设监理协会网站
  • 网站建优化网页脚本设计
  • 手机能访问电脑上自己做的网站吗网页设计作品到哪个网站
  • 网站推广成功案例城乡住房建设部官网查询
  • 养殖类网站模板那个网站的公众后推广做的好
  • 网站开发属于什么类型软件建站之星如何建网站
  • 微信做淘宝优惠券但网站是怎么建设但深圳市深圳市住房和建设局网站
  • 后端网站开发免费域名 网站
  • 综合信息网站建设方案网页浏览器排行榜前十名
  • 北京网站开发建设 58同城网站建设改版公司
  • 如何做网站预览网站设计线框图
  • 电子商务的网站的建设内容珠海自适应网站
  • 站酷海洛设计网站官网wordpress选了中文还是英文
  • 软件最全网站如何上传织梦做的网站
  • 做系统前的浏览网站能找回吗湖南网站建设价位
  • 工程服务建设网站那个网站可以做视频app制作
  • 国外网站访问速度慢企业网络营销策划案
  • 网站建设 亿安网络wordpress 调取菜单
  • 帝国网站管理系统安装教程互联网怎么做网站
  • 模板手机网站建设公司河南最新新闻事件今天
  • 企业网站备案要钱吗商标设计费用一般是多少
  • 天津专业网站制作新乡商城网站建设价格
  • 建筑业务网站建设泉州公司做网站
  • 做网站遇到的问题及解决方法网站快速查找
  • excel做网页放进网站2024年报申报入口官网
  • 伊春住房和城乡建设局网站滨州网站建设制作
  • 芒市网站建设wordpress登入修改