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

8d492804-4822-eb11-8da9-e4434bdf6706.gif

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

8e492804-4822-eb11-8da9-e4434bdf6706.jpeg

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

汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着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) elsebegin
hanoi(n-1,one,three,two);
move(one,three);
hanoi(n-1,two,one,three)endend;begin
readln(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,桌面应用

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/501232.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux的实际操作:任务调度基本说明

Linux可以定时调度我们的脚本或者代码 任务调度&#xff1a;值得是系统在某个时间执行特定的命令或者程序 任务调度的分类&#xff1a; 1.系统工作&#xff1a;有些重要的工作必须周而复始执行。如病毒扫描 2.个别用户工作&#xff1a;个别用户可能希望执行某些程序&#x…

Linux的实际操作:Linux磁盘分区 、挂载

1.分区基础知识&#xff1a; &#xff08;1&#xff09;最多支持4个主分区 &#xff08;2&#xff09;系统只能安装在主分区 &#xff08;3&#xff09;扩展分区要占用一个主分区 &#xff08;4&#xff09;MBR最大只支持 2TB&#xff0c;但是拥有最好的兼容性 2.gpt分区&…

论坛高级签名_首届中国定制白酒高峰论坛在天津盘山举行

阅读本文前&#xff0c;请您先点击上面的蓝色字体&#xff0c;再点击“关注”&#xff0c;这样您就可以继续免费收到文章了。每天都有分享&#xff0c;完全是免费订阅&#xff0c;请放心关注。9月13日&#xff0c;2020行走的酒窖——首届中国(华北)白酒定制高峰论坛&#xff0c…

glibc版本查看_Linux开发必知内容整理 | libc、glibc和glib的关系

在进行Linux开发不可避免的要调用一些系统的API&#xff0c;我们经常开到的概念有诸如glibc、libc和glib等等。那么这些系统库之前的关系是什么样的呢&#xff1f;下面小编带大家了解一下这些库之前的共同点和差异&#xff0c;希望对以后的编程开发提供帮助。glibc 和 libc的关…

威纶触摸屏使用说明书_MODBUS通信之触摸屏与变频器通信知识分享(一)

今天跟大家分享一个有关于MODBUS通信的知识&#xff0c;使用触摸屏不经过PLC&#xff0c;直接对变频器或是仪表进行监控&#xff1a;这里面我们选择用西门子的SMART 700IE的触摸屏及台达VFD_M的变频器为例给大家进行介绍。需要完成这样的一个控制&#xff0c;需要掌握以下几个知…

反函数连续性定理 反三角_高中数学:三角函数诱导公式及诱导公式口诀

定义、定理、公式是学好数学的基础&#xff0c;一些常见的题型的解答方法和技巧也需要牢记于心&#xff0c;今天给大家介绍19种数学记忆方法&#xff0c;会让你学习数学变得轻松&#xff01;1.口诀记忆法高中数学中&#xff0c;有些方法如果能编成顺口溜或歌诀&#xff0c;可以…

Linux系统常用的基本命令【转载CSDN象在舞】

本文主要介绍Linux中常用的基本命令&#xff0c;简单实用&#xff0c;以供大家参考&#xff0c;如有错误&#xff0c;欢迎大家指出。下面开始介绍。 一、查看哪个用户登录的系统 1、users命令 2、whoami命令或者who am i命令 二、查看哪些用户在系统上工作 1、who命令 2、w命…

swiper5 点击图换下一张_电商小牛教你如何选择点击率超同行三倍的爆品主图!...

当我们已经分析好了消费者的购物行为习惯&#xff0c;也把主图的设计原则做好了&#xff0c;接下来我们还需要做的就是如何合理布局主图。很多商家主图位置可能一半都没用&#xff0c;甚至很多商家就用了一张图位置&#xff0c;这是不可取的。现在很多消费者是直接看完主图就下…

iphone屏幕突然变暗_iPhone 玩游戏时屏幕突然变暗,来看看是什么原因?

有没有小伙伴的苹果手机遇到过这种情况&#xff0c;手机打着王者好好的屏幕突然变暗了&#xff0c;而且屏幕亮度调到最大也还是没有亮起来&#xff0c;这到底是怎么回事&#xff1f;后来我仔细研究了一下才知道这其中的原因&#xff0c;朋友们也来看看。一般手机屏幕突然变暗&a…

Linux的实际操作:Linux的分区

原理介绍&#xff1a; &#xff08;1&#xff09;对于Linux来说&#xff0c;无论有多少个分区&#xff0c;分配给哪一个目录使用&#xff0c;归根结底就只有一个根目录&#xff0c;一个独立且唯一的文件结构&#xff0c;Linux中的每一个分区都是用来组成整个文件系统的一部分 …

vscode如何连接新设备_台州要用“超级平台”连接300万台工业设备,成为全省新示范...

全省工业互联网平台推广会上台州工业互联网平台发布、7个工业互联网项目签约——“企业间一座座孤立的烟囱&#xff0c;通过数据‘联姻’打破了信息孤岛。”5月22日&#xff0c;在路桥召开的全省工业互联网平台建设推广会上&#xff0c;专家们这样形容正在发生的变革。工业互联…

Linux的实际操作:给Linux添加一块新硬盘

因为某种原因&#xff0c;Linux系统的一块硬盘已经用完了&#xff0c;现在需要新增加一块硬盘挂载到Linux文件系统上 案例&#xff1a;增加一块 2G的硬盘 sdb1&#xff0c;挂载到文件系统中新增的/home/newdisk文件目录下&#xff0c;后续通过newdisk就可以操控sdb1硬盘 如何增…

归并排序 java_马士兵说之归并排序

大家对于排序应该是挺熟悉的吧&#xff0c;马士兵老师特意为排序出了一波视频&#xff0c;当然文章是转自博客园的&#xff0c;马士兵老师的视频观看请点击下方的了解更多概要本章介绍排序算法中的归并排序。内容包括&#xff1a;1. 归并排序介绍2. 归并排序图文说明3. 归并排序…

tft lcd驱动参数详解_LED拼接屏和LCD拼接屏的区别

LED屏幕和LCD屏幕是每个人都经常听到的两个屏幕&#xff0c;但是每个人之间的区别尚不清楚。不认识的人可能会认为两者之间没有区别。让我们谈谈LED和LCD屏幕之间的区别&#xff1a;首先&#xff0c;什么是LED&#xff1f; LED是发光二极管&#xff0c;LED拼接屏是由发光二极管…

求有向图的简单路径_2020福建农信社招聘-关键路径

2020福建农信社公告暂未发布&#xff0c;预计于2020年1月发布公告&#xff0c;历年福建农信社笔试以纸考形式进行&#xff0c;同时笔试内容包含经济、金融、计算机、法律、财会、公基、三农、农信文化、普惠金融、市场营销、时政等部分&#xff0c;相对而言考试知识点较多&…

cad插件_CAD插件自动编号安装教程

插件下载[名称]&#xff1a;CAD插件-自动编号[大小]&#xff1a;3.67MB [语言]&#xff1a;简体中文 [安装环境]&#xff1a;Win7/Win8/Win10[支持版本]&#xff1a;CAD2004-2020[32/64位下载链接]&#xff1a;pan.baidu.com/s/1XACgkA4OTrsk08QdGQB9RQ[提取码]: 8327安装中有…

Nginx的初步安装

目录 Nginx的初步安装 1.使用远程连接工具连接Linux操作系统 2.因为是开源的&#xff0c;所以可以去官网直接下载 3.安装Nginx前需要安装一些相关的依赖包 第一步&#xff1a;&#xff08;用第一种方式&#xff1a;wget的方式&#xff09;安装pcre 第二步&#xff1a;安装…

苹果手机电越充越少怎么回事_手机充着电,电量缺越来越少是怎么回事?

手机充电状态下越充越少一般由以下几个方面原因造成&#xff1a;手机系统故障&#xff0c;因此导致电池电量显示出现问题。充电器出现故障。充电器和手机接触不良。手机电池出现问题。手机本身存在质量问题。解决方法&#xff1a;手机系统故障&#xff0c;因此导致电池电量显示…

串口助手驱动_STM32Cube22(补充) | 使用硬件I2C驱动OLED(SSD1306)

点上方蓝字关注我们每天都有好玩的东西等着你本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的硬件I2C外设驱动0.96OLED屏幕。1. 准备工作硬件准备开发板首先需要准备一个开发板&#xff0c;这里我准备的是STM32L4的开发板(BearPi)&#xff1a;OLED屏幕这里我使用的是0…

Nginx的开启和关闭

目录 Nginx操作的常用命令 1.首先进入Nginx的目录 2.查看Nginx的版本号 3.启动Nginx 4.关闭Nginx 5.重新加载Nginx Nginx操作的常用命令 1.首先进入Nginx的目录 /usr/local/nginx/sbin 2.查看Nginx的版本号 3.启动Nginx 查看进程状态&#xff1a;是否有nginx进程启动 4…