import java.util.*; public class Solution { public ArrayList<String> getSolution (int n) { // write code here ArrayList<String> ret = new ArrayList<>(); String left ="left",mid = "mid",right="right"; dfs(n,left,mid,right,ret); return ret; } //递归 :String 对应的是出发;借助:目的的 public void dfs(int n, String left, String mid,String right,List<String> list){ String s ; //直接移动 if(n==1){ s = "move from " +left +" to "+right; //将此次操作记录 list.add(s); //直接返回 函数出口 return; } //不为1,先以动n-1个,从left借助right到mid; dfs(n-1,left,right,mid,list); //然后将最大一个移动到right; s = "move from "+left+" to "+right; list.add(s); //最后将mid上的借助left移动到rigft上 dfs(n-1,mid,left,right,list); } }