递归的基本思想总结

概念



递归就是某个函数直接或间接调用自身的问题求解过程。

通过将自身问题划分成相同性质的子问题的求解过程,这些小问题的求解过程较容易,小问题的解就构成了原问题的解。



步骤


1.理解题意,待求问题的解F(X)

2.通过寻找函数G(),使得F(X)=G(F(X-1))  (原解可以用一些子问题的解来表示,寻找递推关系式)

3.且已知F(0)的值,就可以通过F(0)和G()来求F(X)的解


要点


1.如何将原问题划分成子问题

2.递归终止的条件,最小子问题的求解,允许有多个出口

3.界函数,它保证递归的规模向出口靠拢


关键


1.找出递推关系式

2.找到递归终止条件

注:深层次的递归可能导致栈溢出,可以考虑使用全局数组或动态分配数组


举例


求N的阶乘

<1>非递归

#include 
using namespace std;
int main()
{
    int n;
    int count=1;
    cin>>n;
    for (int i=2; i<=n; i++) {
        count*=i;
    }
    cout<


<2>递归

递推关系式   f(x)=x*f(x-1)  
终止条件      乘到1后,x-1=0,结束递归返回1

#include 
using namespace std;
int f(int x)
{
    if (x==0)
        return 1;
    else
        return x*f(x-1);
}
int main()
{
    int n;
    cin>>n;
    int count=f(n);
    cout<







你可能感兴趣的:(【C/C++】,【编程算法基础】)