母牛生仔的递归算法和非递归算法。
来源:互联网 发布:mactype mac字体 编辑:程序博客网 时间:2024/05/01 20:45
//一只母牛,第二年底生一只母牛和一只公牛,第三年底生一只母牛 ,第五年开始母牛会死。公牛也只能活四年。请问一个农场开始只有一只刚出生的母牛,N年后一共有多少只牛。//请写一个函数输出结果,用递归和非递归两种方法来实现. function cowrecursion($i){if ($i == 1) //如果是第一年,则1头牛。 {return 1;}elseif ($i == 2){return 2 + cowrecursion(1); //第一母牛和儿子们+第二母牛第一年}elseif ($i == 3){return 2 + cowrecursion(2) + cowrecursion(1); //第一母牛和儿子们+第二母牛第二年 +第三母牛第一年}elseif ($i ==4){return 2 + cowrecursion(3) + cowrecursion(2); //第一母牛和儿子们+第二母牛第三年 +第三母牛第二年}// elseif ($i == 5)// {// return cowrecursion(4) + cowrecursion(3); //第一母牛死了。公牛也死了。第二母牛第四年 +第三母牛第三年// }elseif ($i >= 5){return cowrecursion($i-1) + cowrecursion($i-2); }}//非递归方式实现function cow_norecursion($i){//实现思路,用数组来存储,value的值表示年限。循环加1.$cows = array(1); //第一年,1头母牛。$cowsmale = array(); //用于存储公牛for ($j=0;$j<$i;$j++) //循环多少年{//循环母牛 $cows_copy = $cows;foreach ($cows as $key => $value){switch($cows_copy[$key]){case 1: break;case 2: $cows_copy[] = 1; $cowsmale[] = 1; break;case 3: $cows_copy[] = 1; break;case 4: break;case 5: unset($cows_copy[$key]); break;}}$cows = $cows_copy;array_walk($cows, function(&$value, $index){ if ($value > 0) $value++; });$cowsmale_copy = $cowsmale; //循环公牛foreach ($cowsmale as $d => $value){ $cowsmale_copy[$d]++;if ($cowsmale_copy[$d] == 5) //到第四年就死了{unset($cowsmale_copy[$d]); }} $cowsmale = $cowsmale_copy; }return count($cows) + count($cowsmale); }echo "<br />list totol--->".cow_norecursion(26);echo "<br />totol recursion--->".cowrecursion(26);
//end
1 0
- 母牛生仔的递归算法和非递归算法。
- 递归算法和非递归算法的difference和转换
- 递归算法和非递归算法的区别和转换
- 汉诺塔-递归算法和非递归算法
- 汉诺塔 算法(递归和非递归算法)
- 快速排序的递归算法和非递归算法
- 二叉树的递归和非递归的遍历算法
- 快速排序递归和非递归算法
- 二分查找算法 递归和非递归
- 汉诺塔递归分析和非递归算法
- 二分搜索非递归和递归算法
- 拆半查找的递归和非递归算法
- 遍历磁盘文件的递归和非递归算法
- 遍历二叉树的递归和非递归算法
- 拆半查找的递归和非递归算法
- 有序链表合并的递归和非递归算法
- 遍历XML树的递归和非递归算法
- 链表翻转的递归和非递归算法
- 给没有毕业的同学
- Jquery中的offset()和position()方法详解
- uiscrollview 放大/缩小后 contentSize被改变
- 二分匹配_HDU_2119
- RedHat Linux 安装oracle11g (转)
- 母牛生仔的递归算法和非递归算法。
- 协议森林10 魔鬼细节 (TCP滑窗管理)
- UIView之CALayer
- RedHat Linux 安装oracle11g (转)
- 游戏测试-数据库语句1
- C语言结构体里的成员数组和指针(1)
- iOS之tableView中的静态cell(静态单元格)
- 关于欧几里得算法和Stein算法
- 数据库第二次测验题目