整个的hanoi递归调用完成后,只会有一个repaint()(也就是最后一次被调用的repaint())去执行paint()中的语句。public void hanoi(int n,int a,int b,int c) {
if (n == 1) {
towerhigh[a]--;
towerhigh[c]++;
whichstick[n] = c;
level[n] = towerhigh[c];
repaint();
//outpaint();
// try{Thread.sleep(10);}catch(InterruptedException e){;};
return;
}
hanoi(n - 1, a, c, b);
towerhigh[a]--;
towerhigh[c]++;
whichstick[n] = c;
level[n] = towerhigh[c];
repaint();
//outpaint();
// try{Thread.sleep(10);}catch(InterruptedException e){;};
hanoi(n - 1, b, a, c);
return;
}
} public void paint(Graphics g){
int i;
g1=g;
g.drawLine(0,120,200,120);
g.drawLine(40,0,40,120);
g.drawLine(100,0,100,120);
g.drawLine(160,0,160,120);
//if (flag==0) {hanoi(5,1,2,3);}
if (flag==1) { otherdraw(g);}
}
if (n == 1) {
towerhigh[a]--;
towerhigh[c]++;
whichstick[n] = c;
level[n] = towerhigh[c];
repaint();
//outpaint();
// try{Thread.sleep(10);}catch(InterruptedException e){;};
return;
}
hanoi(n - 1, a, c, b);
towerhigh[a]--;
towerhigh[c]++;
whichstick[n] = c;
level[n] = towerhigh[c];
repaint();
//outpaint();
// try{Thread.sleep(10);}catch(InterruptedException e){;};
hanoi(n - 1, b, a, c);
return;
}
} public void paint(Graphics g){
int i;
g1=g;
g.drawLine(0,120,200,120);
g.drawLine(40,0,40,120);
g.drawLine(100,0,100,120);
g.drawLine(160,0,160,120);
//if (flag==0) {hanoi(5,1,2,3);}
if (flag==1) { otherdraw(g);}
}
如果是在Swing中出现的这个问题,请在paintComponment(Graphics g)中写