歡迎光臨
每天分享高質量文章

通過一個簡單的數學游戲,清晰瞭解各大編程語言之間的一些區別

我想很多人在小時候都玩過這麼一個游戲,我記得以前的摩托羅拉的手機裡面就有,那就是漢諾塔!

看到圖片是不是想起來玩過這個游戲呢?

漢諾塔:漢諾塔(又稱河內塔)問題是源於印度一個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著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 movement
private 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

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);
begin
if n=1 then move(one,three) else
begin
hanoi(n-1,one,three,two);
move(one,three);
hanoi(n-1,two,one,three)
end
end;
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,桌面應用

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持

    赞(0)

    分享創造快樂