美文网首页
2.4.1 递归和循环

2.4.1 递归和循环

作者: Ching_Lee | 来源:发表于2018-05-24 21:43 被阅读0次

面试题10:斐波那契数列
递归会存在大量的重复数据。按照如下进行优化

<script>
    function Fibonacci(n)
    {
        if(n===0)
            return 0;
        if(n===1)
            return 1;
        let num1=0;
        let num2=1;
        let fibN;
    for(let i=2;i<=n;i++){
        fibN=num1+num2;
        num1=num2;
        num2=fibN;
    }
        return fibN;
    }
</script>

题目二:跳台阶

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法.

function jumpFloor(number)
{
    let F1=1;
    let F2=2;
    if(number===1)
        return 1;
    if(number===2)
        return 2;
    let Fn; 
    for(let i=3;i<=number;i++){
        Fn=F1+F2;
        F1=F2;
        F2=Fn;
    }
    return Fn;
}

题目三:变态跳台阶

一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
假设最后跳1阶 f(n-1)种;最后跳2阶 f(n-2)种;...最后跳n阶 1种
f(n)=f(n-1)+f(n-2)+....+1;

function jumpFloorII(number)
{
    // write code here
    if(number===1)
    return 1;
    if(number===2)
     return 2;
    let f1=1;
    let f2=2;
    for(let i=3;i<=number;i++){
        fn=f1+f2+1;
        f1=f1+f2;
        f2=fn;
    }
    return fn;
}

题目四:覆盖矩形

我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?

function rectCover(number)
{
    if(number===0)
        return 0;
    // write code here
    //覆盖一个方框有一种方法
    if(number===1)
        return 1;
    //覆盖两个有2种.横着覆盖,竖着覆盖
    if(number===2)
        return 2;
    let f1=1;
    let f2=2;
    let fn;
    for(let i=3;i<=number;i++){
        fn=f1+f2;
        f1=f2;
        f2=fn;
    }
    return fn;
}

相关文章

  • 2.4.1 递归和循环

    面试题10:斐波那契数列递归会存在大量的重复数据。按照如下进行优化 题目二:跳台阶 一只青蛙一次可以跳上1级台阶,...

  • 递归和循环

    求和1+3!+ 5!+7!+.....+(2n-1)! 台阶问题,n个台阶,问有多少种不同的方法跨到第n阶,条件:...

  • 思想 / 递归和分治

    递归递归在程序语言中简单的理解是:方法自己调用自己。递归和循环是非常像的,循环都可以改写成递归,递归未必能改写成循...

  • 胡思乱想说递归-下

    递归,迭代与循环 先说一下递归,迭代和循环的意义吧 递归(recursion):指的是一个函数不断调用自身的行为 ...

  • 递归

    定义 递归在程序语言中简单的理解是:方法自己调用自己。递归其实和循环是非常像的,循环都可以改写成递归,递归未必能改...

  • 领扣算法12:整数转换为罗马数字

    题目描述: 递归实现: 循环实现: 递归与循环的比较:

  • 递归和死循环

    在计算机里面,递归永远要给出一个结束条件,比如递归的思维计算阶乘,即N!=1 x 2 x 3 x 4 ……x N,...

  • 递归与循环

    理论上,任何循环都可以重写为递归形式。有些语言没有循环语句,只能使用递归。 循环改递归 改为递归的关键是发现逻辑“...

  • python学习

    1:尾递归 解决递归调用栈溢出的方法是通过尾递归优化,事实上尾递归和循环的效果是一样的,所以,把循环看成是一种特殊...

  • 深究递归和迭代

    深究递归和迭代 使用场景: 需要重复地多次地计算相同的问题,一般会用到递归和循环。 递归: 概念:...

网友评论

      本文标题:2.4.1 递归和循环

      本文链接:https://www.haomeiwen.com/subject/pdohdftx.html