一个细胞一小时分裂一次,生命周期为3小时,求n小时之后容器内有多少细胞
这道题实际上可以用循环,但是要求用递归,用递归而且这个递归挺变态的,三递归,一环扣一环
细胞分裂就是一个完美二叉树,1分2,2分4,4分8,但是有一个前提,细胞只有三个小时的声明周期,所以分裂到3小时的时候也就是黑色这个节点实际上是死亡了的。
白色的代表是新鲜细胞,绿色由白色分裂出来的,黄色由绿色变的,由此可以得到以下代码
function total(n){
let yellow=function(n){
if(n===0||n===1){
return 0;
}
return green(n-1)
}
let green=function(n){
if(n===0){
return 0;
}
return white(n-1)
}
let white=function(n){
if(n===0){
return 1;
}
return white(n-1)+green(n-1)+yellow(n-1)
}
return yellow(n)+green(n)+white(n);
}
/*
分析: 3带进去 2 2 2
2 带进去1 1 1
1带进去 白色ret 1+1+2绿色ret2 黄色ret 1
*/