【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 <stdio.h>
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);
}

猜你喜欢

转载自blog.csdn.net/feit2417/article/details/80956735