青蛙跳台

原理:一只青蛙跳n个台阶,青蛙可以一次性跳1个台阶,也可以跳2个台阶,问,有多少种跳法,可以跳过n个台阶。

分析:青蛙跳台本质上是递归问题,那它为什么是递归问题呢?

①假如有一个台阶,那青蛙只有一种跳法。

②假如有两个台阶,青蛙有两种跳法,1.一个一个台阶跳。2.跳两个台阶

③假如有三个台阶,青蛙有三种跳法,1.一个一个台阶跳。2.一次跳两个台阶再跳一个台阶。3.一次跳一个台阶再跳两台阶。

④假如有四个台阶,青蛙有五种跳法(这里就不再推啦,有兴趣的小伙伴可以推一推)

⑤假如有五个台阶,青蛙有九种跳法(这里就不再推啦,有兴趣的小伙伴可以推一推)

.......

#include<stdio.h>int frog_diving_tower(int n)
{if (n == 1){return 1;}if (n == 2){return 2;}return frog_diving_tower(n - 1) + frog_diving_tower(n - 2);
}int main()
{int n = 0;printf("请输入台阶个数:");scanf("%d", &n);int ret = frog_diving_tower(n);printf("一共有%d种跳法",ret);return 0;
}

升华:一只青蛙跳n个台阶,青蛙可以一次性跳1个台阶,也可以跳2个台阶,也可以跳3个台阶,问,有多少种跳法,可以跳过n个台阶。

#include<stdio.h>int frog_diving_tower(int n)
{if (n == 1){return 1;}if (n == 2){return 2;}if (n == 3){return 3;}return frog_diving_tower(n - 1) + frog_diving_tower(n - 2) + frog_diving_tower(n - 3);
}int main()
{int n = 0;printf("请输入台阶个数:");scanf("%d", &n);int ret = frog_diving_tower(n);printf("一共有%d种跳法",ret);return 0;
}

注释:不难看出其中的规律,只要改动int frog_diving_tower(int n)这个函数就行。

                                                                  汉诺塔

原理:有三个柱子A,B,C,而A柱上有n个圆盘,要求把A柱的圆盘放在C盘上,并且要求小的圆盘放在大的圆盘上,问:A柱上的n个圆盘放在C盘上,需要移动多少次,求最小次数。

分析:汉诺塔问题本质上还是递归问题,那它为什么是递归问题呢?

①假如有一个圆盘:需要移动1次。A-C。

②假如有两个圆盘:需要移动3次。A-B,A-C,B-C

③假如有三个圆盘:需要移动7次。A ->C,A->B,C->B,A->C,B->A,B->C,A->C

......

1683443499141

注意:

代码实现

//这里one是A柱
//这里two是B柱
//这里there是C柱
#include<stdio.h>void move(char x, char y)
{printf("%c->%c ", x, y);//这里模拟圆盘移动过程
}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个盘子移到B柱上(借助 C)move(one, three);              //将A柱上剩下的1个盘子移到C柱上hanoi(n - 1, two, one, three); //将B柱上n-1个盘子移到C柱上(借助 A)}
}int main()
{int n = 0;printf("请输入圆盘个数:");scanf("%d", &n);hanoi(n, 'A', 'B', 'C');  return 0;
}

不知不觉就到了尾声啦,作为小白的我,可能写的不是很好,不对的地方还请各位小伙伴留言给我谢谢啦。

C语言:青蛙跳台与汉诺塔问题相关推荐

  1. C语言---移盘子----Hanoi(汉诺)塔问题,显示移动盘子的步骤

    C语言-移盘子----Hanoi(汉诺)塔问题,显示移动盘子的步骤 在学习递归的过程中,Hanoi(汉诺)塔问题是避开不了的,很多新手在这儿一脸懵. 我们先简单介绍一些Hanoi(汉诺)塔问题到底是个 ...

  2. C语言递归思想实现汉诺塔

    目录 1.递归思想简介 2.汉诺塔问题 3.汉诺塔递归的c语言实现 1.递归思想简介 在c语言中,程序调用自身的编程技巧称为递归( recursion). 递归的定义看上去似乎很抽象,使用代码描述能够 ...

  3. 递归 青蛙跳 、汉诺塔

    青蛙跳 : 一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级.求该青蛙跳上一个n 级的台阶总共有多少种跳法(假如有三个台阶:第一次跳一个,第二次挑两个 和 第一次跳两个,第二次挑一个 算一种跳法) ...

  4. C语言递归小游戏—汉诺塔(hanoi)

    前言: 汉诺塔大家都不陌生吧,在猩球崛起这个电影里,人们通过凯撒玩汉诺塔知道了它的智商增高了,这个益智小游戏的规则就是: 汉诺塔(Tower of Hanoi),又称河内塔.是一个源于印度古老传说的益 ...

  5. c语言汉诺塔动画程序,C语言实现的动画汉诺塔

    /*本程序实现C上的汉诺塔动画移动效果,如有建议可和我联系,QQ:928853003*/ /*编写者:杰 */ /*完成时间:2012年9月25日9:02*/ /*有部分函数可参见easyx帮助,运行 ...

  6. 两个经典的函数递归问题:青蛙跳台和贝诺塔

    ✅作者简介:大家好我是@每天都要敲代码,一位材料转码农的选手,希望一起努力,一起进步!

  7. hdu 1207 汉诺塔II (四柱汉诺塔)

    思路是借鉴网上一大牛的,写的很完美了,所以一句没改,代码是自己敲的,C语言版 变体汉诺塔 问题描述:在经典汉诺塔的基础上加一个条件,即,如果再加一根柱子(即现在有四根柱子a,b,c,d),计算将n个盘 ...

  8. 18938 汉诺塔问题

    18938 汉诺塔问题 时间限制:1000MS 代码长度限制:10KB 提交次数:0 通过次数:0 题型: 编程题 语言: 不限定 Description 汉诺塔(Tower of Hanoi),又称 ...

  9. 青蛙跳台(含变种)及汉诺塔递归,母牛生小牛

    青蛙跳台(含变种)及汉诺塔递归,母牛生小牛 文章目录 青蛙跳台(含变种)及汉诺塔递归,母牛生小牛 #define _CRT_SECURE_NO_WARNINGS #include<Windows ...

最新文章

  1. 【OpenCV】图像代数运算:平均值去噪,减去背景
  2. Oracle执行计划显示
  3. CSP2019洛谷P5666:树的重心
  4. mysql 停从库_不停止 MySQL 服务增加从库的两种方式
  5. Atitit springboot 全局异常处理 1.1.@ControllerAdvice 不起作用 public class ExceptionHandle { @ExceptionHand
  6. lj245a引脚功能图_零基础入门单片机(2)学会控制IO引脚你就入门啦
  7. 中国游戏的未来在哪里 - 游戏行业20年历史观察及趋势分析
  8. 比PS简单N倍的抠图神器,效果还不错~
  9. Ubuntu 16.04安装(重装)NVIDIA驱动
  10. Ubuntu安装Microsoft Windows Fonts微软字体库
  11. mysql用户定义的完整性_Mysql(数据库完整性)
  12. ubuntu下载速度慢的解决办法--修改下载源
  13. 浅谈股价预测模型:你是否掉进机器学习的陷阱
  14. 【python实现视频解帧并保存到文件夹】
  15. MVX-Net论文解读
  16. 算法:分治策略和递归1 | 通过迭代来学习递归
  17. 基于TCPCopy的仿真压测方案
  18. MSP430 F5529 硬件SPI OLED 单片机 0.96英寸7针OLED SPI 6针OLED
  19. 自兴动脑:见证人工智能发展新高度,挑战AI智慧医疗
  20. C++字符输入方式详解

热门文章

  1. 深入浅出 Python 装饰器:16 步轻松搞定 Python 装饰器
  2. 大工《模拟电子线路实验》大作业离线作业
  3. excel 计算机beep,Beep语句有什么用??
  4. 计算机语言算人类语言吗,计算机语言对人类语言的影响
  5. android源码目录结构(2.1版本和2.2版本)
  6. CentOS7 下源码安装MPlayer播放器
  7. IDEA LinearLayout
  8. python pip install 遇到的问题1
  9. OHOS Develop Notes-如何解锁Linux的root用户
  10. windows系统如何将 CMD(命令提示符)添加到鼠标右键菜单