题目
有一个细胞 每一个小时分裂一次,一次分裂一个子细胞,第三个小时后会死亡。那么n个小时之后有多少细胞。
解析
将细胞按不同时间分类的方法略显复杂,这里介绍另外一位大神的算法:链接
未开始计时之前,都是1个细胞, f(n) = 1, n <= 0
未开始有细胞死亡时,f(n) = 2 * n, n < 3
开始有细胞死亡时,f(n) = 2 * f(n - 1) - 死亡细胞数
f(3)时, f(0)的细胞死亡,死亡细胞数 = f(0)
f(4)时, f(1)的细胞死亡,直观上直接减去 f(1),得到公式f(n) = 2 * f(n-1) - f(n-3),
但这是错误的,因为f(1)两个细胞中的一个是f(0)的,在f(3)的时候已经死亡,所以死亡细胞数 = f(1)新生细胞
f(5)时, f(2)的细胞死亡,但f(2)的4个细胞中2个已经死亡,所以死亡细胞数 = f(2) 新生细胞
从上面的分析来看,死亡细胞数并不是前3小时的细胞总数f(n-3),因为n-3时刻细胞总数 = 新生细胞 + 老细胞,很显然老细胞在n时刻之前就已经死亡。
因此,n时刻的死