【C语言】 递归函数分析

递归与递归函数

递归:是C语言编程中,分析复杂问题的重要思想。
递归函数:是指一个函数的函数体中直接或间接调用了该函数自身。

 

递归函数执行过程

递推阶段:从原问题出发,按递归公式递推从未知到已知,最终达到递归终止条件

回归阶段:按递归终止条件求出结果,逆向逐步代入递归公式,回归到原问题求解

 

构造递归函数的关键

递归公式:递归公式属于一种递推公式。
结束条件:递推公式不能无限制调用自身,需要这样一个出口。

 

经典案例

 

问题1:求n!

问题分析

 

n! = n * (n-1)!   
(n-1)! = (n-1) * (n-2)!
(n-2)! = (n-2) * (n-3)!
......
......
2! = 2 * 1!

1.递推公式  显然  n! = n * (n-1)!  作为递推公式,可以将 (n-1)! 进行相同的规律分解。

2.结束条件  1! = 1 ,这是已知的。

 

函数编程

#include 
int fac(int n) 
{
        if (n == 0 || n == 1)
                return 1;

        return n * fac(n-1);
}

 


 

问题2:计算斐波那契数列

1, 1, 2, 3, 5, 8, 13, 21, 34, 55......

1.规律:这个数列从第3项开始,每一项都等于前两项之和。

2.递推公式: f(n) = f(n-1) + f(n-2)

3.结束条件: f(1)=1、f(2)=1

 

函数编程

int fib(int n) 
{
        if (n == 1 || n == 2)
                return 1;

        return fib(n-1)+fib(n-2);
}

 

你可能感兴趣的:(计算机基础-编程语言)