程序调用自身的编程技巧就称为递归,英文单词叫recursion。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。
上图是递归算法的堆栈实现,fact()子函数每次被调用系统都会为这个函数创建一个新的过程,每个过程都是独立的,每个n都不同,都有自己存储空间,只有每个被调过程完成时,才返回上一个被调过程。
(1) 递归就是在过程或函数里调用自身。
(2) 在使用递增归策略时,必须有一个明确的递归结束条件,称为递归出口。
(3) 递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算法设计程序。
(4) 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。
关于Java递归算法原理,本文就介绍这么多,希望对大家有所帮助,谢谢!