问题:
一个细胞,一小时分裂一次,声明周期是三小时,求n小时后有多少细胞?
分析:
细胞消亡: 白色 -> 绿色 -> 黄色 -> 黑色
白色:新细胞,分裂一次后产生一个白色细胞,自己则变成绿色
绿色细胞再次分裂出一个白色细胞,自己则变成黄色
黄色细胞再次分裂出一个白色细胞,自己则变成黑色,黑色即声明周期结束
存活的细胞 = 白色 + 绿色 + 黄色
代码
// 细胞分裂算法/*一个细胞,一小时分裂一次,声明周期是三小时,求n小时后有多少细胞?细胞消亡: 白色 -> 绿色 -> 黄色 -> 黑色白色:新细胞,分裂一次后产生一个白色细胞,自己则变成绿色绿色细胞再次分裂出一个白色细胞,自己则变成黄色黄色细胞再次分裂出一个白色细胞,自己则变成黑色,黑色即声明周期结束存活的细胞 = 白色 + 绿色 + 黄色*/function total(n) {var yellow = function (n) {// 设置出口, 边界条件if (n === 0 || n === 1) return 0return green(n - 1)}var green = function (n) {// 设置出口, 边界条件if (n === 0) return 0return white(n - 1)}var white = function (n) {// 设置出口, 边界条件if (n === 0) return 1return white(n - 1) + green(n - 1) + yellow(n - 1)}return yellow(n) + green(n) + white(n)}console.log(total(0));console.log(total(1));console.log(total(2));console.log(total(3));console.log(total(4));console.log(total(5));/*12471324123*/
