我正在尝试编写一个递归程序(河内之塔),每个步骤必须以一点一点的形式显示在窗口中,稍微延迟但睡眠和task.delay对我不起作用:(
这是我的代码:
public void solve(int a,int b,int c,int n,PictureBox[] arr)
{
if (n == 1)
{
h[c].Push(h[a].Pop());
print(arr);
return;
}
solve(a, c, b, n - 1,arr);
h[c].Push(h[a].Pop());
solve(b, a, c, n - 1, arr);
print(arr);
// System.Threading.Thread.Sleep();
}
答案 0 :(得分:-1)
你说你的程序是递归的,所以注释的Thread.Sleep()不会在你到达递归结束时被击中,所以最好将Thread睡眠放在其他地方
public void solve(int a,int b,int c,int n,PictureBox[] arr)
{
if (n == 1)
{
h[c].Push(h[a].Pop());
print(arr);
return;
}
//like here
System.Threading.Thread.Sleep();
solve(a, c, b, n - 1,arr);
h[c].Push(h[a].Pop());
solve(b, a, c, n - 1, arr);
print(arr);
}