gpt4 book ai didi

java - 计算java中的递归步骤

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:34:33 25 4
gpt4 key购买 nike

我想统计递归的步数,当达到某个限制时停止递归。

实际上,我正在处理汉诺塔问题,我想限制为解决该问题而执行的幻灯片数量。这是我的解决方案:

class HanoiNK{

public static void main(String args[]){

int n = 4;
int k = 5;

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

public static void slide(int counter, int height, char source,
char buffer, char destination) throws Exception{
if(counter > 0){
if(height == 1){
System.out.println("move "+ height +" from " +
source + " to " + destination);
}else{
counter--;
slide(counter, height - 1, source, destination, buffer);
System.out.println("move "+ hoehe +" from " +
source + " to " + destination);
counter--;
slide(counter, height - 1, buffer, source, destination);
}
}else{
throw new Exception("stop here");
}
}
}

这是实例: http://ideone.com/xeN4x

我的问题是我得到了

move 1 from A to B
move 2 from A to C
move 1 from B to C
move 3 from A to B
move 1 from C to A
move 2 from C to B
java.lang.Exception: stop

作为输出。但是应该执行 5 张幻灯片而不是 6 张幻灯片。有什么想法吗?

最佳答案

问题是您正在测试计数器是否大于或等于,然后将其递减

counter--;
// ...
counter--;

这里计数器可以变为负值。您需要检查一下。

关于java - 计算java中的递归步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4570960/

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