我想很多人在小时候都玩过这么一个游戏,我记得以前的摩托罗拉的手机里面就有,那就是汉诺塔!

看到图片是不是想起来玩过这个游戏呢?

汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘

今天除了用编程语言解决这个简单数学问题以外,小编还发现其实实现同一个东西,使用不同的编程语言,可以看出它们之间的相似之处以及一些区别,接下来就看看各大编程语言是如何实现的吧。

Python

def hanoi(n, a, b, c):if n == 1:        print(a, '-->', c)else:        hanoi(n - 1, a, c, b)        print(a, '-->', c)        hanoi(n - 1, b, a, c)# 调用hanoi(5, 'A', 'B', 'C')

C

#include #include void Hanoi(int n, char a,char b,char c);void Move(int n, char a, char b);int count;int main(){int n=8;printf("汉诺塔的层数:\n");scanf(" %d",&n);    Hanoi(n, 'A', 'B', 'C');    sleep(20000);return 0;}void Hanoi(int n, char a, char b, char c){if (n == 1)    {        Move(n, a, c);    }else    {        Hanoi(n - 1, a, c, b);        Move(n, a, c);        Hanoi(n - 1, b, a, c);    }}void Move(int n, char a, char b){    count++;printf("第%d次移动 Move %d: Move from %c to %c !\n",count,n,a,b);}

C#

using System;class HANOI{private static int time = 0;static void Main(string[] args){        Hanoi(3, "x", "y", "z");        Console.WriteLine(time + " Times");        Console.ReadKey();    }public static void Hanoi(int n, string x, string y, string z){if (n == 1)        {            Console.WriteLine(x + "--->" + z);            time++;        }else        {            Hanoi(n - 1, x, z, y);            Hanoi(1, x, y, z);            Hanoi(n - 1, y, x, z);        }    }}

Java

public class Hanoi {/**    *     * @param n 盘子的数目    * @param origin 源座    * @param assist 辅助座    * @param destination 目的座    */public void hanoi(int n, char origin, char assist, char destination) {if (n == 1) {            move(origin, destination);        } else {            hanoi(n - 1, origin, destination, assist);            move(origin, destination);            hanoi(n - 1, assist, origin, destination);        }    }// Print the route of the movementprivate void move(char origin, char destination) {        System.out.println("Direction:" + origin + "--->" + destination);    }public static void main(String[] args) {        Hanoi hanoi = new Hanoi();        hanoi.hanoi(3, 'A', 'B', 'C');    }}

PHP

<?php function hanoi($n,$x,$y,$z){if($n==1){        move($x,1,$z);    }else{        hanoi($n-1,$x,$z,$y);        move($x,$n,$z);        hanoi($n-1,$y,$x,$z);    }}function move($x,$n,$z){echo'movedisk'.$n.'from'.$x.'to'.$z.'';}hanoi(10,'x','y','z');?>

Pascal

var m:integer;procedure move(getone,putone:char);begin writeln(getone,'->',putone) end;procedure hanoi(n:integer;one,two,three:char);beginif n=1 then move(one,three) elsebeginhanoi(n-1,one,three,two);move(one,three);hanoi(n-1,two,one,three)endend;beginreadln(m);write('the step to moving disks:');writeln;hanoi(m,'A','B','C')end.

通过上面的实现代码,我们很容易发现,Python语言的使用代码量是最少的,也是最为简洁的,并没有那么多的()和{},所以对于很对想要学习编程语言的小伙伴们,小编是非常建议大家学习Python入门的,毕竟对新手还是非常的友好的!

虽然它们的语法可能是存在一些差异,但是实现效果的逻辑思维还是一样的呀,所以一法通万法通!

最后再说一句(主要针对那些杠精^.^)

这并没有说专门棒哪个编程语言,也没有说贬低哪个编程语言,因为每一个编程语言都有自己的特点以及擅长的领域,Python代码特点就是简洁,这个是我们不能反驳的。

每一个编程语言都有其擅长的领域,比如:

Java擅长的领域:

网页, 企业级开发, 普通应用软件, 游戏后台

C/C++擅长的领域:

C: 系统底层, 驱动, 嵌入式开发.

C++: 游戏开发, 大规模, 高性能, 分布式要求的程序开发。

PHP擅长的领域:

网络前端,用于生成网页。也可以整个web服务器都用php,比如很多论坛引擎。

Python擅长的领域:

服务器开发与物联网开发。信息安全,大数据处理,数据可视化机器学习,物联网开发,各大软件的api,桌面应用

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持

编程一个最简单游戏_通过一个简单的数学游戏,清晰了解各大编程语言之间的一些区别...相关推荐

  1. python与数学关系大吗_通过一个简单的数学游戏,清晰了解各大编程语言之间的一些区别...

    原标题:通过一个简单的数学游戏,清晰了解各大编程语言之间的一些区别 前言 我想很多人在小时候都玩过这么一个游戏,我记得以前的摩托罗拉的手机里面就有,那就是汉诺塔! 看到图片是不是想起来玩过这个游戏呢? ...

  2. HTML5游戏_基于DOM平台跳跃小游戏开发_9.按键监听

    HTML5游戏_基于DOM平台跳跃小游戏开发 按键监听 视频讲解 HTML5游戏 效果图 本章知识点: 对象自定义名称属性,可以用变量来命名属性名称 //这段代码把多个属性(品牌, 型号, 排量)赋给 ...

  3. python做一个小游戏_利用python做个小游戏

    从本期开始,我们将利用几天的时间用python来做个小游戏,当然,在做小游戏之前,我们必须学会一个做小游戏的第三方库--pygame.可能有人会说,python不擅长或者说不适合用来做游戏,的确是这样 ...

  4. python和cc++哪个适合做游戏_分享一个C++与Python开发的中小型通用游戏服务端框架(跨平台,开源,适合MMORPG游戏)...

    在开发一款游戏项目时,在立项时我们往往会考虑或者纠结很多,比如: 1,对于开发来说:服务端和客户端应该选择什么语言?用什么协议通信才更效率?协议后期如何维护?socket是用长连接还是短连接?tcp还 ...

  5. vc6开发一个抓包软件_开发一个软件要多少钱?app软件开发的费用

    很多人咨询app开发相关的问题,大多数人最关心的就是:开发一个软件要多少钱?在本文中,我们将为大家分析这个经典问题:app软件开发的费用是多少? 对于行业中的任何人来说,这都是一个棘手的问题,即使你已 ...

  6. new 一个结构体数组_每天一个IDA小技巧(四):结构体识别

    之前提到IDA可以将一长串的数组数据声明变成一行数组声明,简化反汇编代码,对于结构体,IDA也同样支持通过各种设置工具来改善结构体代码的可读性. 这篇文章的目标是将[edx+10h]之类的结构体元素访 ...

  7. vc6开发一个抓包软件_开发一个软件多少钱?3种软件开发公司报价

    开发一个软件多少钱?现在随着智能手机的发展,各种各样的app大受市场欢迎,同时也方便了大家日常生活,开发一个自己的app软件成为不少传统企业及创业者的首选.但是如何选择靠谱的开发公司呢?同样的app开 ...

  8. c#小游戏_.NET手撸2048小游戏

    前言 2048是一款益智小游戏,得益于其规则简单,又和 2的倍数有关,因此广为人知,特别是广受程序员的喜爱. 本文将再次使用我自制的"准游戏引擎" FlysEngine,从空白窗口 ...

  9. pygame做的著名游戏_用Python和Pygame写游戏-从入门到放弃(1)

    Pygame的介绍 Pygame是一组专门为编写游戏设计的Python模块,增加了SDL库功能.可以使你在Python语言中轻松的创建全功能的游戏和多媒体程序. Pygame是免费的,在GPL许可下发 ...

最新文章

  1. 用动图讲解分布式 Raft
  2. 计算机考研数学试卷类型,数学会是你的计算机考研拦路虎吗?
  3. 【深度学习】超强优化器如何与网络有机结合
  4. MySQL - 使用trace工具来窥探MySQL是如何选择执行计划的
  5. x5内核有什么优点_欧尚X5国产又一黑马SUV,颜值高性能强,顶配仅需10万左右
  6. 解决部分控件,自动获取焦点的情况
  7. 李开复谈创业失败十原因:经不住诱惑 直接山寨
  8. TotalFinder for Mac(Finder增强工具)
  9. nginx负载均衡的方法
  10. AUTOSAR Functional Safety
  11. 整数平方一定大于零吗?
  12. 推荐系统基础03:矩阵分解与FM
  13. APP性能测试——基于手机的专项测试
  14. [最新]Myeclipse 10.7.1 激活工具及过程详解 亲测
  15. 初学 PCIe System (一) - PCIe介绍及其配置空间
  16. 华为 / 小米都看不惯,微信 iOS / 安卓 8.0.30 正式版终于修复转发文件多次保存问题
  17. butter中文意思_butterfly是什么意思_butterfly的翻译_音标_读音_用法_例句_爱词霸在线词典...
  18. matlab怎么画碎石图,成分分析中biplot函数不理解_主成分分析
  19. 第十届蓝桥杯c语言试题,第十届蓝桥杯真题编程题1-7解析(高级组).pdf
  20. 【C语言】字符变量详解

热门文章

  1. 算法训练 Pollution Solution(计算几何)
  2. Visual Studio 2015 自动生成 的大文件xxx.vc.db的删除问题
  3. 使用svnsync同步svn
  4. 会话管理-1.1.Cookie介绍
  5. 验证occ和vtk整合工作的demo
  6. 2.1.3码元、波特、速率、带宽
  7. Leetcode--300. 最长上升子序列
  8. 视图插入数据_用EXCEL作数据分析--招聘信息
  9. mysql授予权限和撤销权限的关系_MySQL数据库常用的授予权限和撤销权限的命令讲解...
  10. python获取依赖包和安装依赖包