From ecde6336d7c6869b54ed4df2de7cc62f3479a0ad Mon Sep 17 00:00:00 2001 From: Wang Shurong <442570303@qq.com> Date: Sat, 2 May 2015 17:29:46 +0800 Subject: [PATCH] =?UTF-8?q?=E7=8C=B4=E5=AD=90=E5=90=83=E6=A1=83=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 猴子摘了若干个桃子: 第一天吃了一半,还不过瘾,又多吃了一个。 第二天早上又将剩下的桃子吃掉一半又多吃了一个。 以后每天早上都吃了前一天剩下的一半零一个。 到第十天早上再想吃时,就剩下1个桃子了。 试编程解决:第一天共摘了多少个桃子? --- eatPeach.php | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 eatPeach.php diff --git a/eatPeach.php b/eatPeach.php new file mode 100644 index 0000000..593a97b --- /dev/null +++ b/eatPeach.php @@ -0,0 +1,68 @@ + P2 + 1 = P1/2 +// --> (P2 + 1) * 2 = P1; +// --> P1 = (P2 + 1) * 2; + + +//递归算法 +// 递归的本质就是要找到相邻两个数据之间的关系代数式 +function peaches($day,$peach){ + if($day==1){ + return $peach; + }else{ + return peaches($day-1,($peach+1)*2); + } +} +echo '递归--第一天摘了',peaches(10,1),'颗桃子
'; +echo '
'; + + +//递归解法二: +// 递推公式:f(n-1) = (f(n)+1)*2 +function peaches2($n){ + if( $n == 10 ){ + return 1; + }else{ + return ( peaches2($n+1) + 1 ) * 2 ; + } +} + +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ + +//递推算法 +function eatPeach(){ + for( $day = 10; $day > 0; $day-- ){ + $peach = ($day==10) ? 1 : ($peach+1)*2; + } + return $peach; +} +echo '递推--第一天摘了',eatPeach(),'颗桃子
'; +echo '
'; + +//流程演示 +function showPeach(){ + for( $day = 10; $day > 0; $day-- ){ + if( $day == 10 ){ + $peach = 1; + echo '第',$day,'天剩',$peach,'颗桃子
'; + continue; + } + $peach = ($peach + 1) * 2; + echo '第',$day,'天剩',$peach,'颗桃子
'; + } + return $peach; +} +echo '

流程演示:

'; +$p = showPeach(); +?> \ No newline at end of file