递归的应用

求n!

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

求裴波那契数列

#include 
using namespace std;
int Func(int n){
    if(n==0||n==1) return 1;
    else return Func(n-1)+Func(n-2);
}
int main(){
    int n;
    cin>>n;
    cout<<Func(n)<<endl;
    return 0;
}

实现全排列

#include 
using namespace std;
const int maxn=11;
int n;//排列数
int p[maxn];//当前排列
bool hashTable[maxn]={false};//记录数是否在p排列数列中
void ranke(int index){
    if(index==n+1){//已结束输出
        for(int i=1;i<=n;i++)
        if(i!=n) cout<<p[i]<<",";
        else cout<<p[i]<<endl;
    }
    for(int i=1;i<=n;i++){//先依次为1—n分配不同位置:即不同的列的位置
        if(hashTable[i]==false){
            p[index]=i;//放入第index列的位置
            hashTable[i]=true;
            ranke(index+1);//然后依次放入第index+1...n列;
            hashTable[i]=false;//结束后复原
        }
    }
}
int main(){
    cin>>n;//输入排列数
    ranke(1);
    return 0;
}

你可能感兴趣的:(小白进阶,算法,c++,数据结构)