Java 简单的河内塔代码,如何将时间限制从5秒减少到3秒

Java 简单的河内塔代码,如何将时间限制从5秒减少到3秒,java,Java,在这里,我得到了5秒的运行时间,我应该怎么做,把它减少到3秒。帮我一下 导入java.util.* class GFG { public void solution(int n,int s,int a,int e){ if(n==1){ System.out.println(s+ " " +e); } else{ solution(n-1,s,e,a); System

在这里,我得到了5秒的运行时间,我应该怎么做,把它减少到3秒。帮我一下

导入java.util.*

class GFG {
    public void solution(int n,int s,int a,int e){
        if(n==1){
         System.out.println(s+ " " +e);    
        }
        else{
            solution(n-1,s,e,a);
            System.out.println(s+ "->" +e);
            solution(n-1,a,s,e);
        }
    }

    public static void main (String[] args) {
        //code

        GFG hom=new GFG();
        System.out.println("engter number of disks:");
        Scanner sc=new Scanner(System.in);
        int dish=sc.nextInt();
        hom.solution(dish,1,2,3);
    }
}

我还没有检查逻辑,但在像GFG这样的网站上,ur输出应该打印得很快,所以我使用了StringBuilder

检查这是否有效

public class GFG {
static StringBuilder sb;
public void solution(int n,int s,int a,int e){
    if(n==1){
     sb.append(s+ " " +e+"\n");    
    }
    else{
        solution(n-1,s,e,a);
        sb.append(s+ "->" +e+"\n");
        solution(n-1,a,s,e);
    }
}

public static void main (String[] args) {
    //code
    sb=new StringBuilder();
    GFG hom=new GFG();
    System.out.println("enter number of disks:");
    Scanner sc=new Scanner(System.in);
    int dish=sc.nextInt();
    hom.solution(dish,1,2,3);
    System.out.println(sb);
}
}

考虑使用自己的数据结构来保存堆栈,而不是使用递归。(事实上,我不知道这会有多大帮助。但在我熟悉的情况下,通话的开销可能会很大。)