php演算法:母牛生小牛問題
有一母牛,到4歲可生育,每年一頭,所生均是一樣的母牛,到15歲絕育,不再能生,20歲死亡,問n年後有多少頭牛。
遞迴版(論壇裡的)
function t($n) {
static $num = 1;
for($j=1; $j<=$n; $j++){
$count++;
if($j>=4 && $j<15) {$num++;t($n-$j);}
if($j==20){$num--;}
}
return $num;
}
非遞迴版(原創)
function suanfa($n =10){
if ($n<=3){
return 1;
}else {
$arr = [];
$arr[] = 4;
for ($i = 4; $i <= $n; $i++) {
$count++;
$newArr = [];
foreach ($arr as $key => $age) {
if ($age < 3) {
$arr[$key] = $age + 1;
} elseif ($age < 15) {
$arr[$key] = $age + 1;
$newArr[] = 0;
} elseif ($age <19) {
$arr[$key] = $age + 1;
} else {
unset($arr[$key]);
}
}
foreach ($newArr as $value){
$arr[] = 0;
}
}
return count($arr);
}
}
兩者在時間大於20年後有差異,因為題目對於這個過一年的定義很模糊,不過思路肯定是沒問題。遞迴演算法看似程式碼很少,實際執行的迴圈次數是比非遞迴版的多的,而且程式碼可讀性差。
相關文章
- 題解1236:母牛生小牛 (Java描述)Java
- POJ 3279-Fliptile(母牛翻方格-開關問題)
- php簡單演算法 - 肇事車輛問題PHP演算法
- php問題PHP
- php演算法面試題PHP演算法面試題
- php陣列問題PHP陣列
- PHP 常見問題PHP
- php編碼問題PHP
- PHP面試問題總結PHP面試
- PHP相關問題集合PHP
- PHP問題總結:PHP最佳化及高效提速問題小結(轉)PHP
- 【演算法題】任務分配問題---匈牙利演算法演算法
- PHP中 mkdir: Permission denied 問題PHP
- PHP大小寫是否敏感問題PHP
- php關於session的問題PHPSession
- 演算法問題基於蟻群演算法求解求解TSP問題(JAVA)演算法Java
- A+B 演算法問題演算法
- 演算法——路徑問題演算法
- go的演算法問題Go演算法
- 【演算法】8皇后問題演算法
- (演算法)跳躍問題演算法
- 演算法題:矩陣鏈乘問題演算法矩陣
- 演算法題:頂點覆蓋問題演算法
- rhel6+nginx+php+php-fpm防火牆配置問題NginxPHP防火牆
- 關於PHP佇列的問題PHP佇列
- Mac 下切換 PHP 版本問題MacPHP
- 關於php生成靜態問題PHP
- 32 位 PHP 時間戳問題PHP時間戳
- PHP 與 JS 的編碼問題PHPJS
- PHP 開發版本問題處理PHP
- 配置 Homestead 遇到 PHP 版本問題PHP
- PHP檔案頭BOM頭問題PHP
- PHP中“==”運算子的安全問題PHP
- PHP開發安全問題總結PHP
- PHP初學者常見問題集PHP
- PHP顯示MySQL亂碼問題PHPMySql
- PHP中include()的使用問題 (轉)PHP
- C語言遞迴之母牛的故事C語言遞迴