递归算法是程序设计中的一种很重要的思想。在计算机科学中,递归就是一个问题的解决依赖于这个同样问题的更小实例。这与迭代(iteration)的思想恰恰相反。这种方法能被使用在很多问题上,而且递归也是计算机科学的一个主要的思想。见图,这就是一颗靠递归电脑绘制的图像——一颗不断调用自身的“树”。
递归的力量显然在于用一个无限的陈述(statement)来定义一个无限对象集合。同样地,一个无限次的运算也能被描述成一个有限的递归程序,即使这个程序不包含明显的重复。有些编程语言没有循环结构(loops),但是却能依赖于递归来重复调用代码。