====== 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)