<?php
/*
猴子吃桃问题:
有一堆桃子,猴子第一天吃了其中的一半,并再多吃了一个!
以后每天猴子都吃其中的一半,然后再多吃一个。
当到第十天时,想再吃时(即还没吃),发现只有1个桃子了。
问题:最初共多少个桃子?
分析:
天 数量
10 1
9 (1+1)*2=4
8 (4+1)*2=10
7 (10+1)*2=22
。。。。。。
第n天 (第n+1天的个数+1)*2
提示:可以用递归。
*/
//功能:获取到第n天的桃子数
function taozi( $n){
if( $n == 10) return 1;
return (taozi($n+1) + 1) * 2; //一般规律
}
echo "第一天的桃子数为:" . taozi(1);
//使用递推来实现:
$yestoday = 1; //表示前一天的桃子数,当然也表示已知的第10天(初值)
for($i = 9; $i >= 1; --$i){
$result = ($yestoday+1)*2;
$yestoday = $result;
}
echo "<br />第一天的桃子数为:" . $result;
//理解一下以下代码:
$result = 1;
for($i = 9; $i >= 1; --$i){
$result = ($result+1)*2;
}
echo "<br />第一天的桃子数为:" . $result;
//再理解一下以下代码:
for($i = 10; $i >= 1; --$i){
$result = $i==10 ? 1 : ($result+1)*2;
}
echo "<br />第一天的桃子数为:" . $result;
echo "<br />第5天的桃子数为:" . taozi(5);
?>