递归思想
递归思想是算法中常用到的一种构造思路。递归允许函数或过程对自身进行调用,是对算法中重复过程的高度概括,从本质层面进行刻画,避免算法书写中过多的嵌套循环和分支语法。因此,是对算法结构很大的简化。
递归分为广义递归和狭义递归。狭义递归就是本文重点讨论的内容,即函数调用自身。广义递归还包括了A调用B–B调用C–C调用D 这样不同函数的调用。
从数学形式上,狭义递归形式可以写做一个函数表达式:
f ( n ) = G ( f ( g ( n ) ) ) f(n)=G(f(g(n))) f(n)=G(f(g(n))),即 f ( n ) f(n) f(n)可以通过一个 f ( g ( n ) ) f(g(n)) f(g(n))的表达式间接推出。当然,如果递归式可解,则最后也能将 f ( n ) f(n) f(n)直接用n表示出来。
如: f ( n ) = f ( n − 1 ) + n f(n)=f(n-1)+n f(n)=f(n−1)+n (1)
f ( n ) = f ( n 2 ) + n f(n)=f(\frac{n}{2})+n f(n)=f(2n)+n (2)
f ( n ) = f ( n 1 ) + f ( n 2 ) + . . . + f ( n k ) f(n)=f(n_1)+f(n_2)+...+f(n_k) f(n)=f(n1)+