问题分析:
把每年的小羊数量放到数组里,即:刚开始0岁时小羊有1只,1岁、2岁、3岁、4岁的小羊有0只,5岁的小羊已经升天啦(没有5岁的小羊,第五年的时候死了)。
因此刚开始小羊数组为array(1,0,0,0,0)
;
第一年小羊数组array(0,1,0,0,0)
;新生小羊=0;
第二年小羊数组array(1,0,1,0,0)
;新生小羊=array[1]+array[3];
第三年小羊数组array(0,1,0,1,0)
;新生小羊=array[1]+array[3];
第四年小羊数组array(2,0,1,0,1)
;新生小羊=array[1]+array[3];
第五年最后一个小羊会死掉,因此需要删除最后一个,所以每年要删除(刚开始是没有,从第五年开始)
数组操作函数:
array_unshift(array,val):向数组前面添加一个元素,返回数组元素个数;
array_pop(array):删除数组最后一个元素,返回该元素;
array_sum(array):返回数组元素和;
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php function yangnum($n) { // 刚开始有一只羊 $arr = array(1,0,0,0,0); for ($i=1; $i <= $n; $i++) { // 下一年 1岁即将步入2岁和3岁步入4岁的羊都会生下小羊。新生的小羊=当前1岁的羊+当前3岁的羊 $tmp = $arr[1] + $arr[3]; array_unshift($arr, $tmp); // 新的小羊从前面插入数组 0岁 array_pop($arr); // 4岁的小羊要升天啦 } return array_sum($arr); // 小羊数量 } |
因此n年后小羊数量yangnum(n)
我的微信
扫一扫加我微信