您的位置 >>> 星想互联 >>> 编程技术 >>> PHP基础
PHP实现猴子摘桃问题
点击数:4042  发布时间2017-09-29 17:48:44

猴子第一天摘下N个桃子,当时就吃了一半,还不过瘾,就又多吃了一个。第二天又将剩下的桃子吃掉一半,又多吃了一个。以后每天都吃前一天剩下的一半零一个。到第10天再想吃的时候就剩一个桃子了,问第一天共摘下来多少个桃子?并反向打印每天所剩桃子数。


首先他是一个递归问题,什么是递归。递归就是函数调用自身。

咸宁网站建设公司分析这个问题,要知道第一天桃子的个数,就必须要知道第二天桃子的个数,可以使用一个递归函数getPeachnumber(n)

其中当n为10的时候表示的是第十天剩余桃子的个数,这时候我们想要求得第九天的桃子数, 题上说第n天的桃子数是n-1天桃子数的一半再减一,相当于是(第n+1天的桃子数+1)*2是第n天的桃子数,所以可构建出递归函数 num =(getPeachNumber(n+1)+1)*2; 再控制好结束条件,返回值,就OK了。

PHP程序如下 :

function getPeachnumber($n){
if($n==1){
return 1;
}
$tol=2*(getPeachnumber($n-1)+1);
echo $tol."<br>";
return $tol;
}
echo getPeachnumber(10);


当然,也可以用循环实现,也就是倒推,程序如下:

$d=10; //控制天数
$n=1;//第一天一只,以后每天先吃一只,然后乘以2就是后面一天的总数

while($d>=1){
$n=($n+1)*2;
$d--;
echo $n."<br>";
}

来源:咸宁网站建设