• 关于第一题:

    def fibonacci(n, cache=Hash[[[0,0],[1,1]]])
        return cache[n] if cache[n]
        cache[n] = fibonacci(n-2, cache) + fibonacci(n-1, cache)
    end
    puts (1...1000).to_a.collect{|t| fibonacci(t) }.join(', ')
    

    斐波那契函数的经典解决方案是使用递归 (太精深的数学实在不懂,比如 26 楼的方案), 常规的方法在小数字上很容易,但一旦数字过大,计算量就相当恐怖,这里用了个缓存 Hash, 即使数字达到 1000, 基本上一运行就能得出结论。