目录
百战程序员,全站22050+开发课程+文档 ,学习精选优质好课快人一步!观看视频 快捷键ALT+N

JAVA全系列 教程

3762个小节阅读:7092.9k

收藏
全部开发者教程

C语言快速入门

JAVA全系列 教程

面向对象的程序设计语言

Python全系列 教程

Python3.x版本,未来主流的版本

人工智能 教程

顺势而为,AI创新未来

大厂算法 教程

算法,程序员自我提升必经之路

C++ 教程

一门通用计算机编程语言

微服务 教程

目前业界流行的框架组合

web前端全系列 教程

通向WEB技术世界的钥匙

大数据全系列 教程

站在云端操控万千数据

AIGC全能工具班

A

A A

White Night

阅读(10.4k)
赞(0)

递归结构

image-20220210144108910

  1. 递归是一种常见的算法思路,在很多算法中都会用到。比如:深度优先搜索(DFS:Depth First Search)等。
  2. 递归的基本思想就是“自己调用自己”。

image-20220210144202430

递归结构包括两个部分:

  • 定义递归头 解决:什么时候不调用自身方法。如果没有头,将陷入死循环,也就是递归的结束条件。
  • 递归体 解决:什么时候需要调用自身方法。

【示例】使用递归求n!

执行结果如图所示:

image-20220210144401662

执行结果如图所示:

image-20220210144435139

递归的缺陷

算法简单是递归的优点之一。但是递归调用会占用大量的系统堆栈,内存耗用多,在递归调用层次多时速度要比循环慢的多,所以在使用递归时要慎重。

比如上面的递归耗时558ms(看电脑配置)。但是用普通循环的话快得多,如下所示。

【示例】使用循环求n!

执行结果如图3-29所示:

image-20220210144558329

实时效果反馈

1. 如下关于递归结构的说法,错误的是:

A 深度优先搜索(DFS:Depth First Search)就使用了递归

B 递归结构其实就是:方法自己调用自己

C 递归调用会占用大量的系统堆栈,但是内存消耗很少,可以忽略不计

D 递归必须确定什么时候不调用自身方法,否则将陷入死循环。

答案

1=>C

北京市昌平区回龙观镇南店村综合商业楼2楼226室

©2014-2023 百战卓越(北京)科技有限公司 All Rights Reserved.

京ICP备14032124号-2