JAVA汉罗塔和C语言汉罗塔实例
前言
刚刚在安装clion的时候,突然想到学习C语言的时候,汉罗塔用到的递归。为了巩固一下递归的知识,自己决定用JAVA也写一个递归试试。同时我也用C写了一个汉罗塔的递归。层数初步设为25步,然后在运行的时候我用time命令(LINUX中的一个命令)对二者的运行时间进行统计。
JAVA
代码
/**
* 用JAVA实现汉罗塔
* 递归复习
* ASorb
*/
public class Hannota{
int floor = 25;
static int i = 0; //计数器
//移动塔层
void moveH(char markA,char markB,char markC,int floor){
if (floor == 1) //只有一层直接移动
printfS(markA , markC);
else{
moveH(markA,markC,markB,floor - 1);
printfS(markA,markC);
moveH(markB,markA,markC,floor - 1);
}
}
//打印移动信息
void printfS(char markA,char markB){
System.out.println("第"+(++i)+"步:"+markA+"->"+markB);
}
public static void main(String[] args){
Hannota h = new Hannota();
h.moveH('A','B','C',h.floor);
}
}
结果图

C语言
代码
/**
* 用C实现汉罗塔
* 递归调用
* ASorb
*/
#include<stdio.h>
//打印移动信息
void printfS(char markA,char markB){
static int i = 0; //计数器
printf("第%d步:%c->%c\n",++i,markA,markB);
}
//移动塔层
void moveH(char markA,char markB,char markC,int floor){
if(floor == 1)
printfS(markA,markC);
else{
moveH(markA,markC,markB,floor - 1);
printfS(markA,markC);
moveH(markB,markA,markC,floor - 1);
}
}
int main(){
int floor = 25; //层数
moveH('A','B','C',floor);
return 0;
}
结果图

END
我们从截图中可以看到移动25层塔需要33554431步,对于时间的统计只是个人觉得好玩。当然不可否认的是C确实会比JAVA快,但是这C在某些方面会比JAVA强大。毕竟一个C语言是“面向过程”,而JAVA是“面向对象”语言。
原文地址:https://www.orbpi.cn/2019/cjtfmxeaf000djs73t0lpiscb.html#more

浙公网安备 33010602011771号