美文网首页
(11)递归算法题目

(11)递归算法题目

作者: 顽皮的石头7788121 | 来源:发表于2019-03-13 11:19 被阅读0次

使用递归的地方太多,比如树的遍历等,这里只介绍涉及递归的算法,同时递归效率一般比较低,所以太复杂的运算在Java中容易内存溢出。

(1)斐波那契数列

算法思路:F(0) = 0;F(1) = 1;F(n)=F(n-1)+F(n-2)(n>1)
1、递归解法

Long  Fibonacci(int n)
{
        If(n< = 0)
            Return 0;
        If(n==1)
            Retuen 1;
        Return Fibonacci(n-1)+ Fibonacci(n-2)
}
大量重复计算

2、改进算法

Long  Fibonacci(int n)
{
        Long num1 = 0;
        Long num2 = 1;
Long result = 0;
        For(int I = 2;i<=n;i++)
{
    Result = num1+num2;
    Num1 = num2;
    Num2 = result;
}
Return result;
}

代码见:https://github.com/yuanfuqiang456/LeetCode/blob/master/src/others/FibonacciList.java

(2)青蛙跳台阶问题

算法思路:
一个可以跳一个或者两个台阶F(n)=F(n-1)+F(n-2)
一次可以跳N个到1个台阶。则利用数学归纳法为2的n-1次方
若第一次选择跳1个,则剩下的有F(n-1)种跳法
若第一次选择跳2个,则剩下的有F(n-2)种跳法
……
F(n) = F(n-1)+F(n-2)+…F(1)
F(n-1) = F(n-2)+F(n-3)+..F(1)

(3)矩形覆盖问题

21的小矩形横着或者竖着去覆盖更大的矩形,如28的大矩形。有多少种方法。

矩形覆盖
设2*8时候为f(8),若最左边竖着放,剩下为F(7)种,若横着放,剩下为F(6)种。仍然是斐波那契数列

(4)将一个较大的钱,不超过1000000(10^6)的人民币,兑换成数量不限的100、50、10、5、2、1的组合,请问共有多少种组合呢?

相关文章

  • (11)递归算法题目

    使用递归的地方太多,比如树的遍历等,这里只介绍涉及递归的算法,同时递归效率一般比较低,所以太复杂的运算在Java中...

  • 使用Memoization优化递归算法

    空闲时在LeetCode上练练算法题,一般来说,很多题目最容易想到的就是递归算法。递归算法不仅容易想到和实现,而且...

  • 递归求从1加到n的和

    1.题目算出从1加到n的和(使用递归算法)

  • 快速幂模板

    递归算法 非递归算法

  • 2019-03-31

    本周学习简单总结 请一定在今天完成LeetCode全部算法题目 Leetcode算法题: 树: 递归:https:...

  • 爱立信研发(C/C艹/java)面经

    题目 题目不多,主要涉及一些算法、语法、Linux命令等。 算法题:如何不使用循环来实现冒泡排序,方法是利用递归。...

  • python递归算法、尾递归算法及优化

    文章概述 递归算法和尾递归概述递归算法的优化 递归算法 介绍:递归算法是计算机编程领域非常重要的一种算法,采用分而...

  • C++ 递归算法

    递归算法,尾递归算法求阶乘!

  • 今日听算法感受

    我们每周都会有算法作业,而且会每周进行讲解,这都是王跃坤全盘负责的,这周算法作业是递归,全是递归题目,在此之前我甚...

  • Java递归算法详解

    递归算法是一种直接或者间接调用自身函数或者方法的算法。Java递归算法是基于Java语言实现的递归算法。递归算法的...

网友评论

      本文标题:(11)递归算法题目

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