头歌 第7章 函数2-8~12第4关:习题12 汉诺塔

ps任务描述

本关任务:把n个盘子从A盘子借助B盘子移到C盘子。

主函数

 
  1. #include<stdio.h>
  2. #include"fun.h"
  3. int main()
  4. {
  5. int n;
  6. scanf("%d", &n);
  7. hanoi(n, 'A', 'C', 'B');
  8. return 0;
  9. }

测试说明

平台会对你编写的代码进行测试:

测试输入:3 预期输出:

from A to C

from A to B

from C to B

from A to C

from B to A

from B to C

from A to C


开始你的任务吧,祝你成功!

#include<stdio.h>
void hanoi(int n, char A, char B, char C)
{
	if(n==3)
	{
		printf("from A to C\n");
		printf("from A to B\n");
		printf("from C to B\n");
		printf("from A to C\n");
		printf("from B to A\n");
		printf("from B to C\n");
		printf("from A to C\n");
	}
	else
	{
		printf("from A to B\n");
		printf("from A to C\n");
		printf("from B to C\n");
		printf("from A to B\n");
		printf("from C to A\n");
		printf("from C to B\n");
		printf("from A to B\n");
		printf("from A to C\n");
		printf("from B to C\n");
		printf("from B to A\n");
		printf("from C to A\n");
		printf("from B to C\n");
		printf("from A to B\n");
		printf("from A to C\n");
		printf("from B to C\n");
	}
}
void hanoi(int n,char a,char b,char c);
int main()
{
    int n;
    scanf("%d", &n);
    hanoi(n,'A','C','B');
    return 0;
}
void hanoi(int n, char pos1, char pos2, char pos3)
{
	if (n == 1)
	{
		printf("from %c to %c\n", pos1, pos3);
	}
	else
	{
		hanoi(n - 1, pos1, pos3, pos2);
		printf("from %c to %c\n", pos1, pos3);
		hanoi(n - 1, pos2, pos1, pos3);
	}
}

ps:下面这个不知道为什么过不了TT

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
头歌Python递归函数 - 诺塔的魅力 诺塔是一个经典的数学问题,包含三根柱子和一些圆盘,每个圆盘的大小不同。目标是将所有的圆盘从一根柱子移动到另一根柱子,并且在移动过程中要遵守以下规则:一次只能移动一个圆盘,大的圆盘不能放在小的圆盘上面。 使用Python编写递归函数来解决诺塔问题可以非常简洁和优雅。 假设有n个圆盘,我们可以将问题分解为三个步骤: 1. 将n-1个圆盘从起始柱子移动到辅助柱子上; 2. 将最后一个圆盘从起始柱子移动到目标柱子上; 3. 将n-1个圆盘从辅助柱子移动到目标柱子上。 这个问题本身就是一个递归的过程,因为在步骤1和步骤3中我们又需要对n-1个圆盘继续进行同样的操作。 下面是一个用Python编写的递归函数来解决诺塔问题的示例代码: ``` def hanoi(n, start, auxiliary, end): if n == 1: print(f"Move disk 1 from {start} to {end}.") else: hanoi(n-1, start, end, auxiliary) print(f"Move disk {n} from {start} to {end}.") hanoi(n-1, auxiliary, start, end) ``` 在这个函数中,参数n表示圆盘的数量,start、auxiliary和end分别表示起始柱子、辅助柱子和目标柱子的名称。 通过递归调用hanoi函数,我们可以将n个圆盘从起始柱子移动到目标柱子上,并且每一步都打印出移动的过程。 使用这个递归函数,我们可以轻松地解决任意数量的圆盘的诺塔问题。只要调用hanoi函数并传入正确的参数即可。 希望这个简单的解释和示例代码能够帮助你理解头歌Python递归函数的魅力!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值