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

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

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

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

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

    分享創造快樂