PHP基于递归算法解决兔子生兔子问题

本文实例讲述了PHP基于递归算法解决兔子生兔子问题。分享给大家供大家参考,具体如下:

接到面试通知辗转反侧,一直在默念明天改如何介绍自己的项目经验等。

早早的起床,洗漱,把自己的总结的问题自问自答了一些。

匆匆吃了早饭,挤进让人面目狰狞的地铁,此时什么都不顾,只盼着赶紧下地铁。终于提前半小时到了面试地点,再次拿出准备的问题看了几眼,还剩15分钟上去。跟着人力填了表格,然后给了我一个算法题。

如下:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,请编程输出两年内每个月的兔子总数为多少?

忽然记起来,这道题之前的一个朋友跟我谈论过,思路是一样的。

第一种方法(for循环实现):

<?php
  function getResult($month){
   $one = 1; //第一个月兔子的对数
   $two = 1; //第二个月兔子的对数
   $sum = 0; //第$month个月兔子的对数
   if($month < 3){
     return ;
     }
   for($i = 2;$i < $month; $i++){
     $sum = $one + $two;
     $one = $two;
     $two = $sum;
   }
   echo $month.'个月后共有'.$sum.'对兔子';
  }
//测试:
getResult(8)
//输出:8个月后共有21对兔子

第二种方法(递归):

<?php
function fun($n){
  if($n == 1 || $n == 2){
    return 1;
  }else{
    return fun($n-1)+fun($n-2);
  }
}
//测试:
echo fun(8)
//输出:21

事后,也去网上查了一下,但是大多数代码示例都是C语言、c++、java等等语言的。并没有太多PHP相关的代码示例,这两种方法,希望可以帮到大家。

其实整个面试过程挺紧张,好在最后完成的挺漂亮。这不,复试通知来了,感谢那个千锋PHP哥们。

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数据结构与算法教程》、《php程序设计算法总结》、《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP常用遍历算法与技巧总结》及《PHP数学运算技巧总结》

希望本文所述对大家PHP程序设计有所帮助。

您可能感兴趣的文章:

  • 关于PHP递归算法和应用方法介绍
  • php全排列递归算法代码
  • PHP递归算法的详细示例分析
  • PHP使用递归算法无限遍历数组示例
  • php获得文件夹下所有文件的递归算法的简单实例
  • PHP基于非递归算法实现先序、中序及后序遍历二叉树操作示例
  • PHP基于二分法实现数组查找功能示例【循环与递归算法】
  • PHP基于回溯算法解决n皇后问题的方法示例
  • PHP使用栈解决约瑟夫环问题算法示例
  • php实现猴子选大王问题算法实例
  • PHP贪婪算法解决0-1背包问题实例分析
(0)

相关推荐

  • 关于PHP递归算法和应用方法介绍

    PHP作为开发动态页面WEB的首选技术,对于它的基础知识我们一定要牢记,这让才能有助于编程.我们一起来看看PHP递归算法是怎么回事吧. 1.调用子程序的含义: 当主程序执行到调用子程序A语句时,系统保存一些必要的现场数据,然后执行类似于BASIC语言的GOTO语句,跳转到子程序A(为了说得简单些,我这里忽略了参数传递这个过程).当子程序A执行到调用子程序B语句时,系统作法如上,跳转到子程序B.子程序B执行完所有语句后,跳转回子程序A调用子程序B语句的下一条语句(我这又忽略了返回值处理)子程序A执

  • PHP递归算法的详细示例分析

    我们在建设一个网站的时候,程序员们首选的当属PHP语言.我们对PHP还是比较熟悉的,接下来我们将会为大家介绍一下PHP递归算法.PHP,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext Preprocessor)的缩写. PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,现在被很多的网站编程人员广泛的运用.PHP 独特的语法混合了 C.Java.Perl 以及 PHP 自创新的语法.它可以比 CGI 或者

  • PHP基于非递归算法实现先序、中序及后序遍历二叉树操作示例

    本文实例讲述了PHP基于非递归算法实现先序.中序及后序遍历二叉树操作.分享给大家供大家参考,具体如下: 概述: 二叉树遍历原理如下: 针对上图所示二叉树遍历: 1. 前序遍历:先遍历根结点,然后遍历左子树,最后遍历右子树. ABDHECFG 2.中序遍历:先遍历左子树,然后遍历根结点,最后遍历右子树. HDBEAFCG 3.后序遍历:先遍历左子树,然后遍历右子树,最后遍历根节点. HDEBFGCA 实现方法: 先序遍历:利用栈先进后出的特性,先访问根节点,再把右子树压入,再压入左子树.这样取出的

  • PHP使用递归算法无限遍历数组示例

    本文实例讲述了PHP使用递归算法无限遍历数组.分享给大家供大家参考,具体如下: (PS:为方便阅读,此处代码使用php代码格式化工具http://tools.jb51.net/code/phpformat进行了格式化处理) <?php //无限遍历数组 $a1 = array("a", "b", "c"); //一维数组 $a2 = array(array(21, 3, 6), array("a", "b&qu

  • PHP基于回溯算法解决n皇后问题的方法示例

    本文实例讲述了PHP基于回溯算法解决n皇后问题的方法.分享给大家供大家参考,具体如下: 这里对于n皇后问题就不做太多的介绍,相关的介绍与算法分析可参考前面一篇C++基于回溯法解决八皇后问题. 回溯法的基本做法是搜索,或是一种组织得井井有条的,能避免不必要搜索的穷举式搜索法.这种方法适用于解一些组合数相当大的问题. 回溯法在问题的解空间树中,按深度优先策略,从根结点出发搜索解空间树.算法搜索至解空间树的任意一点时,先判断该结点是否包含问题的解.如果肯定不包含,则跳过对该结点为根的子树的搜索,逐层向

  • PHP使用栈解决约瑟夫环问题算法示例

    本文实例讲述了PHP使用栈解决约瑟夫环问题算法.分享给大家供大家参考,具体如下: 约瑟夫环问题: 39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓.于是决定了自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀.然后下一个重新报数,直到所有人都自杀身亡为止.然而Josephus 和他的朋友并不想遵从,Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏. <?php cla

  • PHP基于二分法实现数组查找功能示例【循环与递归算法】

    本文实例讲述了PHP基于二分法实现数组查找功能.分享给大家供大家参考,具体如下: 二分法.分别使用while循环的方法和递归调用的方法. <?php // 二分法的使用数组必须是有序的,或升序,或降序 $arr = array( 1, 3, 5, 7, 9, 13 ); // 递归调用(相比较好理解 function bsearch_r($v, $arr, $low, $high){ if ($low > $high) {// 先判断结束条件 return -1; } $i = intval(

  • php实现猴子选大王问题算法实例

    本文实例讲述了php实现猴子选大王问题算法.分享给大家供大家参考.具体分析如下: 一.问题: n只猴子围坐成一个圈,按顺时针方向从1到n编号. 然后从1号猴子开始沿顺时针方向从1开始报数,报到m的猴子出局,再从刚出局猴子的下一个位置重新开始报数, 如此重复,直至剩下一个猴子,它就是大王. 设计并编写程序,实现如下功能: (1)   要求由用户输入开始时的猴子数$n.报数的最后一个数$m. (2)   给出当选猴王的初始编号. 二.解决方法: /** * @param int $n 开始时的猴子数

  • php全排列递归算法代码

    算法原理如果用P表示n个元素的全排列,而Pi表示n个元素中不包含元素i的全排列,(i)Pi表示在排列Pi前面加上前缀i的排列,那么n个元素的全排列可递归定义为:    ① 如果n=1,则排列P只有一个元素i:    ② 如果n>1,则全排列P由排列(i)Pi构成:根据定义,可以看出如果已经生成(k-1)个元素的排列Pi,那么k个元素的排列可以在每个Pi前面加上元素i而生成.代码实现 复制代码 代码如下: function rank($base, $temp=null){    $len = st

  • PHP贪婪算法解决0-1背包问题实例分析

    本文实例讲述了PHP贪婪算法解决0-1背包问题的方法.分享给大家供大家参考.具体分析如下: 贪心算法解决0-1背包问题,全局最优解通过局部最优解来获得!比动态规划解决背包问题更灵活! //0-1背包贪心算法问题 class tanxin{ public $weight; public $price; public function __construct($weight=0,$price=0) { $this->weight=$weight; $this->price=$price; } }

  • php获得文件夹下所有文件的递归算法的简单实例

    如下所示: function my_scandir($dir) { $files=array(); if(is_dir($dir)) { if($handle=opendir($dir)) { while(($file=readdir($handle))!==false) { if($file!="." && $file!="..") { if(is_dir($dir."/".$file)) { $files[$file]=my_

随机推荐