====== Google数组算法面试题 ====== ===== 题目 ===== T( 0 ) = 1 ; T(1)=1;T(2)=2;T(n)=T(n-1)+T(n-2)+T(n-3); 用最优方式求T(n) ; int T(int n) { } 可以用最熟悉的语言写,不考虑溢出情况 ===== 解答 ===== ==== 解答一 ==== 给出一个Python的非递归解答 #! /bin/python def t(n, T=[0,1,2]): print T if len(T) > n: return T[n] else: for i in range(3,n+1): T.append(T[-1]+T[-2]+T[-3]) return T[n] if __name__ == "__main__": print t(50); print t(5); ==== 解答二 ==== def t(n): def t_iter(r, n): return r if n == 1 else t_iter([r[1], r[2], r[0] + r[1] + r[2]], n-1) return t_iter([0, 1, 2], n)