对递归算法的理解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对递归算法的理解相关的知识,希望对你有一定的参考价值。

   1.递归的定义:程序调用自身的编程技巧称为递归。递归做为一种算法在程序设计语言中广泛应用。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。

  2.递归的优点:代码简洁,结构清晰,可读性强,而且容易用数学归纳法来证明算法的正确性;

  3.递归的缺点:递归算法的运行效率较低,无论是耗费的计算时间还是占用的存储空间都比非递归算法要多。

  4.递归的实例:
    1).计算 n! ;
 1 public class Demo {
 2     public static void main(String[] args) {
 3         System.out.println(recursion(10));
 4     }
 5     public static int recursion(int i){
 6         int sum = 0;
 7         if(i == 1){
 8             return 1;
 9         }else{
10             sum = i * recursion(i-1);
11         }
12         return sum;
13     }
14 }

 

以上是关于对递归算法的理解的主要内容,如果未能解决你的问题,请参考以下文章

递归算法之阶乘代码实现与非递归实现

算法设计方法:递归的内涵与经典应用

怎样才能深刻理解递归和回溯?

各种算法七

递归算法详细分析

精心收集的 48 个 JavaScript 代码片段,仅需 30 秒就可理解!(转载)