我正在比较JS,Rust和Go中的几种算法。我在Go中以这种方式实现了河内的Towsers:
positions
但是此实现比JS或Rust慢得多。因此,我认为这可以更快地完成。但是如何?
我已经尝试将func Hanoi() (hanoi func(n int, from, via, to string) string) {
var moves strings.Builder
var hanoiRe func(n int, from, via, to string)
hanoiRe = func(n int, from, via, to string) {
if n > 0 {
hanoiRe(n-1, from, to, via)
moves.WriteString(from)
moves.WriteString("->")
moves.WriteString(to)
moves.WriteString("\n")
hanoiRe(n-1, via, from, to)
}
}
hanoi = func(n int, from, via, to string) string {
hanoiRe(n, from, via, to)
return moves.String()
}
return
}
与type hanoi struct{moves strings.Builder}
一起使用,这有点慢。使用字符串和func (h *hanoi) ...
的方式要慢得多。
编辑:
我的比较:
JS:
moves += ...
铁锈:
class HanoiJS {
constructor() {
this.moves = "";
}
hanoi(n, from, via, to) {
if (n > 0) {
this.hanoi(n - 1, from, to, via);
this.moves += from + "->" + to + "\n";
this.hanoi(n - 1, via, from, to);
}
return this.moves;
}
}