gpt4 book ai didi

java - 汉诺塔,停止滑动

转载 作者:行者123 更新时间:2023-12-02 08:25:41 29 4
gpt4 key购买 nike

我为汉诺塔问题开发了一个解决方案:

public static void bewege(int h, char quelle, char ablage, char ziel) {  
if(h > 0){
bewege(h - 1, quelle, ziel, ablage);
System.out.println("Move "+ h +" from " + quelle + " to " + ziel);
bewege(h - 1, ablage, quelle, ziel);
}
}

效果很好。现在我想限制幻灯片的数量,并在达到一定限制时抛出异常。我用计数器尝试过,但不起作用:

class HanoiNK{

public static void main(String args[]){
Integer n = Integer.parseInt(args[0]);
Integer k = Integer.parseInt(args[1]);

try{
bewege(k, n, 'A', 'B', 'C');
}catch(Exception e){
System.out.println(e);
}
}

public static void bewege(int c, int h, char quelle, char ablage, char ziel)
throws Exception{
if(h > 0){
if(c != 0){
bewege(c, h - 1, quelle, ziel, ablage);
c--;
System.out.println("Move "+ h +" from " + quelle + " to " + ziel);
bewege(c, h - 1, ablage, quelle, ziel);
c--;
}else{
throw new Exception("stop sliding");
}
}
}
}

永远不会抛出异常。有什么想法吗?

更新:结果是 6 张幻灯片,但应该是 5 张 http://ideone.com/lm084

最佳答案

主题:

在我看来,counter 似乎没有在任何地方定义,因此不应编译。

现在您已经编辑了问题来解决上述问题,如果您的第一个参数大于第二个参数,则会抛出异常,例如:

java HanoiNK 5 3

在这种情况下,当c == 0h == 1时会发生异常。

<小时/>

离题:这些行:

Integer n = Integer.parseInt(args[0]);
Integer k = Integer.parseInt(args[1]);

应该是

int n = Integer.parseInt(args[0]);
int k = Integer.parseInt(args[1]);

...因为 parseInt 返回 int (不是 Integer),并且您将它们传递给的函数接受 int(不是整数)。自动装箱可能可以让您逃脱惩罚,但这是没有必要的。

关于java - 汉诺塔,停止滑动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4570685/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com