美文网首页我家丫头的cpp
CPP使用递归实现阶乘及汉诺塔

CPP使用递归实现阶乘及汉诺塔

作者: 李药师_hablee | 来源:发表于2019-03-27 10:36 被阅读0次

阶乘

//阶乘递归
#include<iostream>
using namespace std;

int Factorial(int n);

int main()
{
    int n,result;
    cout<<"input n: ";
    cin>>n;
    cout<<endl;
    result = Factorial(n);
    cout<<n<<"的阶乘是"<<result<<endl;
}

int Factorial(int n)
{
    int factor;
    if(n == 0)
    {
        factor = 1;
    }
    else
    {
        factor = n*Factorial(n-1);
    }
    
    return factor;
} 

结果

输出.PNG

汉诺塔

//使用递归实现n个盘子的汉诺塔
#include<iostream>
using namespace std;


void Hanoi(int n,char a, char b, char c);
void Move(char from, int n, char to);

int main()
{
    int n;
    cout<<"input n:";
    cin>>n;
    
    Hanoi(n,'a','b','c');
    cout<<endl;
    
    return 0;
 } 
 
void Hanoi(int n, char a, char b, char c)
{
    
    
    if(n>0)
    {
        Hanoi(n-1,a,c,b);
        Move(a,n,c);
        Hanoi(n-1,b,a,c);
    }
 } 
 
void Move(char from, int n, char to)
{
    cout<<"编号为"<<n<<"的盘子从"<<from<<"塔移动到"<<to<<"塔"<<endl;        
} 

结果

输出.PNG

相关文章

网友评论

    本文标题:CPP使用递归实现阶乘及汉诺塔

    本文链接:https://www.haomeiwen.com/subject/hjmavqtx.html