0%

C_C++常用数据结构和算法(九)递归算法思想

递归算法思想

递归算法(Recursion)就是在程序中不断反复调用自身来达到求解问题的目的。(这就要求待求解的问题能够分解为相同问题的一个子问题。)

注意:在递归函数中,必须使用 if 语句强制函数在未执行递归前返回。

分类

  1. 直接递归:在函数中调用函数本身。
  2. 间接递归:间接调用一个函数;如 fun_a 调用 fun_b, fun_b 又调用 fun_a

示例

阶乘

阶乘,就是从 1 到指定数之间的所有自然数相乘的结果;n! = n x (n - 1) x (n - 2) x ... x 2 x 1 。推导:n! = n x (n - 1)!

示例代码

1
2
3
4
5
6
7
8
9
10
11
#pragma mark -- 求自然数的阶乘
long Factorial(unsigned int n)
{
if (1 >= n)
{
return 1;
}
long fact = Factorial(n - 1);

return n * fact;
}

Demo下载