• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

母牛生仔的递归算法和非递归算法。

php 搞代码 4年前 (2022-01-23) 21次浏览 已收录 0个评论
//一只母牛,第二年底生一只母牛和一只公牛,第三年底生一只母牛 ,第五年开始母牛会死。公牛也只能活四年。请问一个农场开始只有一只刚出生的母牛,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)	// {			本&文来源gao@daima#com搞(%代@#码网@	// 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 $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 "
list totol--->".cow_norecursion(26);echo "
totol recursion--->".cowrecursion(26);

//end

以上就介绍了母牛生仔的递归算法和非递归算法。,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:母牛生仔的递归算法和非递归算法。
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址