递归,对于没有接触过编程的人来说,也是一个不好理解的概念。 递归函数的概念,很简单,就是函数调用了自身,调用是不一定每次都有返回值,但最后肯定有一个返回值。 调用过
递归,对于没有接触过编程的人来说,也是一个不好理解的概念。
递归函数的概念,很简单,就是函数调用了自身,调用是不一定每次都有返回值,但最后肯定有一个返回值。
调用过程解析:
递归问题深度解析:
递归函数通常用来解决结构自相似的问题。
所谓结构自相似,是指构成原问题的子问题与原问题在结构上相似,可以用类似的方法解决。具体地,整个问题的解决,可以分为两部分:
第一部分是一些特殊情况,有直接的解法;
第二部分与原问题相似,但比原问题的规模小。实际上,递归是把一个不能或不好解决的大问题转化为一个或几个小问题,再把这些小问题进一步分解成更小的问题,直至每个小问题都可以直接解决。
因此,递归有两个基本要素:
(1)边界条件:确定递归到何时终止,也称为递归出口。
(2)递归模式:大问题是如何分解为小问题的,也称为递归体。
递归函数只有具备了这两个要素,才能在有限次计算后得出结果。
递归就是某个函数直接或间接地调用了自身,这种调用方式叫做递归调用。说白了,还是函数调用。既然是函数调用,那么就有一个雷打不动的原则:所有被调用的函数都将创建一个副本,各自为调用者服务,而不受其他函数的影响。