PHP面试题目

29个成员

数值循环操作试题

发表于 2015-12-15 1314 次查看

有一列数的规则如下 1、1、2、3、5、8、13、21、34... 求第29位数是多少.写出一个方法,通过传入第几位得到该位的数是多少。

8回复
  • 2楼 福娃 2015-12-16

    function getnum($num){
       if($num==1) return 1;
       $b=0;
       $c=1;
       for($i=2;$i<=$num;$i++){
           $on=$b+$c;
           $b=$c;
           $c=$on;
       }
        return $on;
    }
    echo getnum(29);

    答案:514229

  • 3楼 lary 2015-12-16

    没看懂呀 能再讲讲吗?

     

  • 4楼 lary 2015-12-16

    哦哦明白了  额 

  • 5楼 zzliux 2015-12-16

    <?php
    $f = new FibonacciSequence();
    echo $f->getNum(29);

    class FibonacciSequence {
        private $num = array(0,1,1);
        function __construct($length = 50){
            for($i=3;$i<$length;$i++){
                $this->num[$i]=$this->num[$i-1]+$this->num[$i-2];
                if($this->num[$i]<0) break;
            }
        }
        function getNum($index){
            return $this->num[$index];
        }
    }

  • 6楼 福娃 2015-12-16

    function Fibonacci($n){
        if ($n <= 0) {
            return 0;
        } elseif ($n == 1) {
            return 1;
        } else {
            return Fibonacci($n - 1) + Fibonacci($n - 2);
        }
    }
    echo Fibonacci(29);

  • 7楼 祝你好运 2015-12-16

    <?php
    //有一列数的规则如下 1、1、2、3、5、8、13、21、34... 求第29位数是多少.写出一个方法,通过传入第几位得到该位的数是多少。


    function getnum($shu){
        if ($shu<=0) {
            echo '请输入正整数';exit;
        }
      if ($shu==1) {
          echo 1;
      }else{ 
     $n1=0;$n2=1;$sum=0;
     for($i=0;$i<($shu-1);$i++){

       $num=$n1+$n2;
       $n1=$n2;
       $n2=$num;
     }
     echo $num;
    }
    }
    getnum(-1);
    ?>

  • 8楼 墨云溪 2015-12-16

    $a = 1;
    $b = 1;
    $n = $_GET['n'];
    $arr = array(1,1);
    for ($i=1; $i <= $n; $i++ ) {
        $arr[] = $arr[($i-1)] + $arr[$i];
    }
    echo "<pre>";
    var_dump($arr);
    echo '第'.$n.'位数为:'.$arr[$n-1];

发表回复
你还没有登录,请先登录注册

加入我们吧,一起学习QQ群516033298