week3

任务1:汉诺塔问题

任务描述:修改代码输出汉诺塔问题的全部移动步骤,初始状态所有圆盘在B塔,要求移动到A塔。将代码复制粘贴到方框中,将运行结果截图。

void hanoi(int n,char a,char b,char c)

{//把n个盘子从a柱移动到c柱

   if(n>0)

   {

       hanoi(n-1,a,c,b);//n-1个盘子从a移动到b

       printf("%c->%c\n",a,c);//1个盘子从a移动到c

       hanoi(n-1,b,a,c);//n-1个盘子从b移动到c

   }

}  

#include<iostream>

#include<iomanip>

using namespace std;

void hanoi(int n,char a,char b,char c)

{

    if(n>0)

    {

        hanoi(n-1,a,c,b);

        cout<<n<<setw(5)<<a<<setw(5)<<c<<endl;

        hanoi(n-1,b,a,c);

     }

}

int main()

{

    char a='A',b='B',c='C';

    int n;

    cout<<"输入盘片数:";

    cin>>n;

    hanoi(n,a,b,c);

}

任务2:正整数逆序输出

任务描述:输入任意一个不大于9位的正整数,输出各位数的逆序形式,例如:输入12345,输出54321。请分别利用递归和递推两种方式编写程序求解问题。

递归:

#include<stdio.h>

void show(int n)

{

    printf("%d",n%10);

    n=n/10;

    if(n>0)

    show(n);

}

int main()

{

    int n;

    scanf("%d",&n);

    show(n);

    return 0;

}

递推:

#include<iostream>

using namespace std;

int main()

{

       long long n;

       cin >> n;

       while(n)

       {

              cout << n % 10;

              n /= 10;

       }

       return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值