程序员

递归

2019-12-07  本文已影响0人  一笔春秋

分类

定义

归纳证明

练习

int factorial(int n)
{
    if(n<=1) return 1;
    else return n*factoral(n-1);
}
templeate<class T>
T sum(T a[],int n)
{
    T tsum=0;
    for (int i=0;i<n;i++)
    {
         tsum+=a[I];
    }
    retuan tsum;
}

递归运算

T rsum(T a[],int n)
{
    if (n>0)
        return rsum(a,n-1)+a[n-1];
    return 0;
}
template<class T>
void perm(T list[],int k,int m)
{//生成list[k:m]的所有排列
    int i;
    if (k==m){//输出一个排列方式
        for( i = 0; i<=m;i++)
            cout<<list[i];
        cout<<endl;
    }
    else//list[k:m]有多个排列方式,递归的产生这些排列方式
    {
        for ( i = k; i<=m;i++)
        {
            swap(list[k],list[I]);
            perm(list,k+1,m);
            swap(list[i],list[k]);
        }
    }
}
inline void swap(T& a, T&b)
{//交换a和b
    T temp = a;
    a=b;
    b=temp;
}
上一篇 下一篇

猜你喜欢

热点阅读