2008-04-18 Ruby 测试题(00013)

支持,先看下答案咯
郁闷死了,白天想到晚上还是没有想出来,无奈看看答案吧。
#主要代码块:
def movehano(n, from, to, tmp)
 if n == 1
  to.push(from.pop)
  return
 end
 
 hano(n - 1, from, tmp, to)
 hano(1, from, to, tmp)
 hano(n - 1, tmp, to, from)
end

#验证:
n = 10
a, b, c = [], [], []

#a = [n, n-1, n-2, ...1]
n.times {|i| a = n - i}

movehano(n, a, c, b)

print "a:", a * "-", "\n"
print "b:", b * "-", "\n"
print "c:", c * "-", "\n"

#上述程序再加上显示移动过程的代码,基本完整了应该。
另类点的解法

[Copy to clipboard] [ - ]
本帖隐藏的内容需要回复才可以浏览
本帖隐藏的内容需要回复才可以浏览
路过,学习一下
本帖隐藏的内容需要回复才可以浏览
继续疯狂中,膜拜中!
了解一下~