递归算法的优点和缺点,递归算法的优点和缺点是什么

http://www.itjxue.com  2023-01-21 00:24  来源:未知  点击次数: 

一个递归算法必须包括什么?

递归算法包含的两个部分:

1、由其自身定义的与原始问题类似的更小规模的子问题(只有数据规模不同),它使递归过程持续进行,称为一般条件。

2、所描述问题的最简单的情况,它是一个能控制递归过程结束的条件,称为基本条件。(递归出口)

递归的定义:

如果一个对象部分地由它自身组成或按它自己定义,则称它是递归的,所以说递归就是函数/过程/子过程在运行过程中直接或间接调用自身而产生的重入现象。

递归的基本思想:

就是把一个规模大的问题分为若干个规模较小的子问题求解,而每一个子问题又可以分为几个规模更小的子问题。基本上,所有的递归问题都可以用递推公式来表示。

最重要的一点就是假设子问题已经解决了,现在要基于已经解决的子问题来解决当前问题;或者说,必须先解决子问题,再基于子问题来解决当前问题或者可以这么理解:递归解决的是有依赖顺序关系的多个问题。

递归的优缺点:

优点:逻辑清楚,结构清晰,可读性好,代码简洁,效率高(拓展:DFS深度优先搜素,前中后序二叉树遍历)

缺点:函数调用开销大,空间复杂度高,有堆栈溢出的风险

非递归算法比较有哪些主要的优点和缺点

非递归算法和递归算法的主要优缺点:

非递归算法的优点:如果需要处理的数据规模比较大的时候,适合使用非递归算法。缺点:程序代码的可读性差一些。

递归算法的优点:程序代码的可读性要比非递归算法的好,如果需要处理的数据量比较小的时候,适合使用递归算法。缺点:当需要处理的数据规模比较大的时候,就不适合使用递归算法了。因为递归算法涉及到对堆栈的频繁操作(入栈、出栈),系统效率会很低,严重的时候会导致系统崩溃。

计算机里面递归的作用是什么?

你好,很高兴为你解答:

递归算法一般用于解决三类问题:

(1)数据的定义是按递归定义的。(Fibonacci函数)

(2)问题解法按递归算法实现。

这类问题虽则本身没有明显的递归结构,但用递归求解比迭代求解更简单,如Hanoi问题。

(3)数据的结构形式是按递归定义的。

如二叉树、广义表等,由于结构本身固有的递归特性,则它们的操作可递归地描述。

递归的缺点:

递归算法解题相对常用的算法如普通循环等,运行效率较低。因此,应该尽量避免使用递归,除非没有更好的算法或者某种特定情况,递归更为适合的时候。在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。

递归典型问题: 梵塔问题(汉诺塔问题)

已知有三根针分别用A, B, C表示,在A中从上到下依次放n个从小到大的盘子,现要求把所有的盘子

从A针全部移到B针,移动规则是:可以使用C临时存放盘子,每次只能移动一块盘子,而且每根针上

不能出现大盘压小盘,找出移动次数最小的方案.

(责任编辑:IT教学网)

更多