用MIPS指令编码Hanoi函数? jal指令用法
如何用C语言设计hanoi函数
#include<stdio.h>
void hanoi(int number,char begin,char end,char middle);
int main()
{
int number;
char begin,end,middle;
printf("请输入移动的盘子数:");
scanf("%d",&number);
fflush(stdin);
printf("\n请输入起点柱子的名称:");
scanf("%c",&begin);
fflush(stdin);
printf("\n请输入终点柱子的名称:");
scanf("%c",&end);
fflush(stdin);
printf("\n请输入第三根柱子的名称:");
scanf("%c",&middle);
hanoi(number,begin,end,middle);
system("pause");
return 0;
}
void hanoi(int number,char begin,char end,char middle)
{
if(number>=1)
{
hanoi(number-1,begin,middle,end);//将第n-1个盘子从起点移到中间
printf("将第%d个盘子从%c移动至%c\n",number,begin,end);
hanoi(number-1,middle,end,begin);//将第n-1个盘子从中间移到终点
}
}
如果喜欢就加点分吧~写的不容易~ *^_^*
标题:用Python编码描述汉诺塔步骤
#-*- coding:utf-8 -*-
count = 0
def hano():
def hanoi(n,x,y,z):
global count
count += 1
if n == 1:
print('Monving %d' % n, 'from ',x,'to',z)
else:
hanoi(n-1,x,z,y)
print('Monving %d' % n, 'from ',x,'to',z)
hanoi(n-1,y,x,z)
return hanoi
n = int(input("请输入汉诺塔的层数 :"))
hano()(n,'source','helper','target')
print("The total number of steps required is: ",str(count))-----------分-割-线-是-我----------------
复制分割线以上的代码,保存为hannoi.py,在python 3 下运行,得到结果62616964757a686964616fe4b893e5b19e31333363393066如题所示。
C语言中关于hanoi塔问题中hanoi(n-1,one,three,two)的执行方式
hanoi(n-1,one,three,two);
的意思就是说要把1号柱子上的盘子通过3号柱子挪到2号柱子上;
move(one,three);
的意思就是把1号柱子上的盘子挪到3号柱子上;
hanoi(n-1,two,one,three);
的意思就是说要把2号柱子上的盘子通过1号柱子挪到3号柱子上;
用MIPS汇编写一个减法的代码
la$a0, p1# Load prompt
li$v0, 4# Print prompt
syscall
li$v0, 5# Get int x from the user
syscall
move $t0, $v0# Save x in reg $t0
# Get n
la$a0, p2# Load prompt
li$v0, 4# Print prompt
syscall
li$v0, 5# Get int x from the user
syscall
move $t1, $v0# Save n in reg $t1
ble$t0, $zero, IF
ble$t1, $zero, IF
jELSE
IF:la$a0,op1
li$v0,4
syscall
jhalt
ELSE:move$t2, $t0
loop:blt$t2, 1, halt
move$a0, $t2
li $v0, 1
syscall
la$a0, space
li$v0, 4
syscall
sub$t2, $t2, $t1
jloop
halt:li$v0, 10
syscall
.data
p1:.asciiz "Enter x: "
p2:.asciiz "Enter n: "
space:.asciiz " "
op1:.asciiz "Unable to count!"