美文网首页
递归算法思想

递归算法思想

作者: CCCCCccccccch | 来源:发表于2019-11-21 23:23 被阅读0次

在编写计算机程序时,有时使用递归算法可以有效解决一些问题,递归算法往往使算法的描述简洁而且易于理解。

递归算法,就是一种直接或者间接地调用自身的算法:

递归算法的具体实现过程一般通过函数(或子过程)来完成,在函数(或子过程)的内部,编写代码直接或间接调用函数(或子过程)本身,即可完成递归操作。

从递归算法的实质可以看出,递归算法也是一种循环,只是这种循环不是使用程序设计语言的循环语句来实现,而是循环调用函数(或子过程)自身来实现的。要实现这种循环,一般有三个要求:

1、每循环调用一次,求解问题的规模都要有所缩小,即将求解的问题化为一个缩小了的子问题;

2、相邻的两次循环之间有紧密的联系,前一次要为后一次做准备(通常前一次的输出就作为后一次的输入);

3、当子问题的规模极小时,应该能直接给出解答而不再进行递归调用(即必须有一个结束递归的条件),因而每次递归都是有条件的,无条件递归调用将会使程序进入死循环而不能正常结束(最终导致堆栈溢出)。

由以上递归算法的要求可以看出,在使用递归算法解决问题时,需要注意以下几点:

1、在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口;

2、递归算法解题通常显得很简洁,但递归算法解题的运行效率低。所以一般不提倡用递归算法设计程序;

3、在递归调用的过程中,系统将每一次递归调用的返回点、局部变量等保存在系统的栈中,当递归调用次数太多时,就可能造成栈溢出错误。

实例:求阶乘

理解递归算法最简单的例子就是:编写程序求n的阶乘(n!):

function factorial(n){

if( n < 1 ){

return 1

}

return n*factorial( n - 1 )

}

相关文章

  • 二叉树算法之2-计算二叉树节点数

    算法思想:递归

  • 数据结构第二季 Day13 递归 、斐波那契数列

    一、初识递归 1、递归的定义?递归是算法思想或者算法策略吗? 递归的定义:函数(方法)直接或者间接调用自身。 严格...

  • 算法02-递归

    算法02-递归 一、定义 1、思想 程序调用自身的编程技巧称为递归(recursion)。 递归做为一种算法在程序...

  • 递归算法思想

    在编写计算机程序时,有时使用递归算法可以有效解决一些问题,递归算法往往使算法的描述简洁而且易于理解。 递归算法,就...

  • 二叉树算法之0-计算二叉树的深度

    算法思想:使用递归 算法解析:分别递归左树和右树,递归到叶子节点时返回0,递归回溯时值+1,不断累积回溯的深度,每...

  • 递归算法

    递归算法思想 特点 递归过程一般通过函数或子过程来实现。 递归算法在函数或子过程的内部,直接或间接地调用自己的算法...

  • 【python】递归思想和快速排序法

    一、递归思想 递归思想,其实就是自己调用自己。 上图中,我们写了个简单的递归函数,实现阶乘的算法;但程序会报错,显...

  • 8.30 leetcode刷题(2)

    递归和回溯:17 电话号码 思路:运用递归去实现回溯算法的思想。回溯算法本质上是一种暴力搜索,通过递归调用去实现,...

  • 算法导论第2.3章 - 分治算法

    分治算法 递归:算法一次或多次递归地调用其自身已解决紧密相关的若干子问题。这些算法遵循分治法的思想。 分治算法三个...

  • 归并排序

    图解 思想:分治思想 分治思想是算法常用的思想。实现方式通常是递归。分治是一种解决问题的处理思想,递归是一种编程技...

网友评论

      本文标题:递归算法思想

      本文链接:https://www.haomeiwen.com/subject/zvotwctx.html