汉诺塔迭代算法(Towers of Hanoi, classic problem (recursive method))

// Towers of Hanoi, classic problem (recursive method)
// Java how to program, 5/e, Exercise 6.37-38
import  javax.swing. * ;
import  java.awt. * ;
import  java.awt.event. * ;
public   class  HanoiTowers  extends  JApplet  implements  ActionListener  {
 
int number, starting, destination, temp;
 JLabel numberLabel, startingLabel, destinationLabel, tempLabel;
 JTextField numberField, startingField, destinationField, tempField;
 JTextArea output;
 JScrollPane scroller;

 
public void init()
 
{
     
     Container  container
=getContentPane();
     container.setLayout(
new FlowLayout());
     
     numberLabel
= new JLabel("Enter the number of disks:");
     container.add(numberLabel);
     
     numberField
=new JTextField(10);
     container.add(numberField);
     
     startingLabel
= new JLabel("Enter the starting tower:");
     container.add( startingLabel);
     
     startingField
=new JTextField(10);
     container.add( startingField);
     
     destinationLabel
= new JLabel("Enter the destination tower:");
     container.add(destinationLabel);
     
     destinationField
=new JTextField(10);
     container.add(destinationField);
     
     tempLabel
= new JLabel("Enter the temporary tower:");
     container.add(tempLabel);
     
     tempField
=new JTextField(10);
     container.add(tempField);
     
    tempField.addActionListener(
this);
     
     output
=new JTextArea(17,30);
     scroller
=new JScrollPane(output);
     container.add(scroller);
     
     

 }

 
 
public void actionPerformed (ActionEvent event)
 
{
    
     number
=Integer.parseInt(numberField.getText());
     starting
=Integer.parseInt(startingField.getText());
     destination
=Integer.parseInt(destinationField.getText());
     temp
=Integer.parseInt(tempField.getText());
     HanoiRecursiveMethod(number, starting, destination, temp);
     
 }

 
 
public void HanoiRecursiveMethod(int number, int starting, int destination, int temp)
 
{
     
if (number==1)
         output.append(starting
+"--->"+destination+"/n");
     
else
     
{
         HanoiRecursiveMethod(number
-1,starting,temp,destination);
         output.append(starting
+"--->"+destination+"/n");
         HanoiRecursiveMethod(number
-1,temp,destination,starting);
     }

     }

 
 }
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值