C++递归

递归的目的是简化程序设计,使程序易读;
但是递归增加了系统开销 。时间上,执行调用与返回的额外工作要占用CPU时间。空间上,随着美递归一次,栈内存就多占一截;
非递归函数效率虽高,但比较难编程,而且可读性差

 

递归 求n!

//递归 求n!
//递归必须有结束递归的条件
//递归算法效率比较低,但是可读性好 
long fact(int n)
{
    if (n==1)
    {
        return 1;
    }
    return fact(n-1)*n;
}

long fac1(int n) 
{
    long result;
    result=1;
    for (int i=1;i<=n;i++)
    {
        result=i*result;
    }
    return result;
}
void recursive1()
{
    cout<<fac1(6);
}

汉诺塔

//哈诺塔
//n个金片,从A针借助B针移动到C针 

void move(char x,char y)
{
    cout<<x<<"-->"<<y<<endl;
}
void hanoi(int n,char one,char two,char three) 
{
    if (n==1)
    {
        move(one,three);
    }
    else
    {
        hanoi(n-1,one,three,two);//将A座上n-1个盘子借助C座移动到B座上 
        move(one,three);         //将A座上剩下的一个盘子到C座上 
        hanoi(n-1,two,one,three);//将n-1个盘子从B座借助A座移到C座上 
    }
}
void hanoi1()
{
    int m;
    cout<<"input the number of disks:";
    cin>>m;
    hanoi(m,'A','B','C');     
}

 

posted @ 2022-12-08 14:37  jhtchina  阅读(226)  评论(0)    收藏  举报