// javascript var hanota = function(A, B, C) { let n = A.length; moveDisks(n, A, B, C); }; var moveDisks = function(n, A, B, C) { if (n < 1) return; moveDisks(n - 1, A, C, B); // 将A上面n-1个通过C移到B C.push(A.pop()); // 将A的最后一个移到C moveDisks(n - 1, B, A, C); // 将B上面n-1个通过空的A移到C };
T
(
n
)
=
2
∗
T
(
n
−
1
)
+
2
0
=
2
2
∗
T
(
n
−
2
)
+
2
1
+
2
0
=
.
.
.
=
2
n
−
1
+
2
n
−
2
+
.
.
.
+
2
1
+
2
0
=
2
n
−
1
T(n) = 2*T(n-1)+2^0= 2^2*T(n-2)+2^1+2^0=...=2^{n-1} + 2^{n-2} +...+2^1+2^0=2^n-1
T(n)=2∗T(n−1)+20=22∗T(n−2)+21+20=...=2n−1+2n−2+...+21+20=2n−1
时间复杂度:
O
(
2
n
−
1
)
O(2^n-1)
O(2n−1),一共需要移动的次数。
空间复杂度:
O
(
1
)
O(1)
O(1)。