面试题10:斐波那契数列

10.1 斐波那契数列

NowCoder

<?php
header("content-type:text/html;charset=utf-8");
/*
 * 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39   P74
 */

function Fibonacci($n)
{
    if($n < 0  || $n > 39){
        return false;
    }
    if($n <= 1){
        return $n;
    }
    $res = 0;
    $res1 = 0;
    $res2 = 1;
    for($i = 2;$i<=$n;$i++){
        $res = $res1 + $res2;
        $res1 = $res2;
        $res2 = $res;
    }
    return $res;
}

$n = 39;
echo Fibonacci($n);

10.2 跳台阶

NowCoder

<?php
header("content-type:text/html;charset=utf-8");
/*
 * 一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。  P77
 */

function jumpFloor($number)
{
    if($number < 0){
        return false;
    }
    if($number <= 2){
        return $number;
    }
    $res = 0;
    $res1 = 1;
    $res2 = 2;
    for($i = 3;$i <= $number;$i++){
        $res = $res1 + $res2;
        $res1 = $res2;
        $res2 = $res;
    }
    return $res;
}

$n = 2;
echo jumpFloor($n);

10.3 矩形覆盖

NowCoder

<?php
header("content-type:text/html;charset=utf-8");
/*
 * 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?  P79
 */

function rectCover($number)
{
    if($number <0){
        return false;

    }
    if($number <=2){
        return $number;
    }
    $res = 0;
    $res1 = 1;
    $res2 = 2;
    for($i = 3;$i<=$number;$i++){
        $res = $res1 + $res2;
        $res1 = $res2;
        $res2 = $res;
    }
    return $res;
}

10.4 变态跳台阶

NowCoder

<?php
header("content-type:text/html;charset=utf-8");
/*
 * 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。  P78
 */
function jumpFloorII($number)
{
    if($number <=0){
        return false;
    }

    return pow(2,$number-1);
}
原文地址:https://www.cnblogs.com/xlzfdddd/p/10155120.html