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

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,一经查实,立即删除!

相关文章

python decimal用法_Python decimal模块使用方法详解

decimal 模块&#xff1a;decimal意思为十进制&#xff0c;这个模块提供了十进制浮点运算支持1.可以传递给Decimal整型或者字符串参数&#xff0c;但不能是浮点数据&#xff0c;因为浮点数据本身就不准确。2.要从浮点数据转换为Decimal类型from decimal import *Decimal.from_f…

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

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

arcgis批量出图python代码_python使用arcpy.mapping模块批量出图

出图是项目里常见的任务&#xff0c;有的项目甚至会要上百张图片&#xff0c;所以批量出土工具很有必要。arcpy.mapping就是ArcGIS里的出图模块&#xff0c;能快速完成一个出图工具。arcpy.mapping模块里常用的类有MapDocument、DataFrame、Layer、DataDrivenPages和TextElemen…

python读取命令行输入-python获取命令行输入参数列表

&#xff08;一&#xff09;单一独立的参数 如果命令行输入的参数都是各自单一独立的&#xff0c;直接用个循环把所有参数逐一读出来就行了。sys模块里面直接用args sys.argv就可以获取到所有参数了&#xff08;返回值args是一个list&#xff09;&#xff0c;args0]是执行的py…

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的关…

Linux ls常见的命令选项【转载】

-a all ,查看目录下的所有文件&#xff0c;包括隐藏文件 -l 长列表显示 -h human 以人性化的方式显示出来 -d 只列出目录名&#xff0c;不列出其他内容 &#xff08;比如在查询文件时加上-d 就只会显示当前文件的信息&#xff0c;不会显示文件内的信息内容…

威纶触摸屏使用说明书_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中的每一个分区都是用来组成整个文件系统的一部分 …

python 报错继续执行_Python报错不要慌,这三个关键词帮你解决问题!

本文转载自公众号“读芯术”(ID&#xff1a;AI_Discovery)。写代码必然会出现错误&#xff0c;而错误处理可以针对这些错误提前做好准备。通常出现错误时&#xff0c;脚本会停止运行&#xff0c;而有了错误处理&#xff0c;脚本就可以继续运行。为此&#xff0c;我们需要了解下…

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. 归并排序…

LeetCode //C - 1456. Maximum Number of Vowels in a Substring of Given Length

1456. Maximum Number of Vowels in a Substring of Given Length Given a string s and an integer k, return the maximum number of vowel letters in any substring of s with length k. Vowel letters in English are ‘a’, ‘e’, ‘i’, ‘o’, and ‘u’. Example…

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

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