递归算法–斐波那契数列「建议收藏」

递归算法–斐波那契数列「建议收藏」大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39很容易我们想到使用递归求解:publicclassSolution{publicintFibonacci(intn){if(n==0)return0;if(n==1)…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39

很容易我们想到使用递归求解:

public class Solution {
    public int Fibonacci(int n) {
        if(n == 0)
            return 0;
        if(n == 1)
            return 1;
        return Fibonacci(n-2) + Fibonacci(n-1);
    }
}

当n比较大时,可以明显感觉算法运行速度比较慢,这是由于上述返回代码中使用了两层递归,使用递归的思想是好的,但是这里我们可以用迭代明显改善算法运行效率,用空间换时间:

public class Solution {
    public int Fibonacci(int n) {
        if(n < 2)
            return n;
        int f = 0, g = 1;
        int result = 0;
        for(int i = 1; i < n; i++){
            result = f + g;
            f = g;
            g = result;
        }
        return result;
    }
}

问题变形

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

分析

这里写图片描述
对于n步操作,可以分两种情况讨论:
1. 第一步这样覆盖
这里写图片描述
那么f(n) = f(n-1);
2. 第一步这么覆盖
这里写图片描述
那么下一步只有可能这么覆盖
这里写图片描述
那么f(n) = f(n-2)
所以f(n) = f(n-1) + f(n-2)

public class Solution {
    public int RectCover(int target) {
      if(target  <= 1){
            return 1;
        }
        if(target*2 == 2){
            return 1;
        }else if(target*2 == 4){
            return 2;
        }else{
            return RectCover((target-1))+RectCover(target-2);
        }
    }
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/194858.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vsto 批量删除列

    vsto 批量删除列list.add(“S1”);list.add(“D5”);stringaddress=string.Join(“,”,list.ToArray());worksheet.get_Range(address,Type.Missing).EntireColumn.Delete(0);

    2025年7月17日
    5
  • c++创建对话框_窗体边框改为对话框样式

    c++创建对话框_窗体边框改为对话框样式本例中涉及到对话框标题栏的自绘,双缓冲位图的显示以及位图按钮类的使用。

    2022年10月8日
    4
  • 13个免费资源网站,你想要的全都有!【各类宝藏资源,建议收藏】

    13个免费资源网站,你想要的全都有!【各类宝藏资源,建议收藏】前言前段时间,博主写了一篇文章关于如何用Python自制一款音乐播放器,有不少粉丝私信我说,这些高颜值UI设计模板都是从哪里找的,可以把网址分享出来嘛~当然没问题,今天就把多年收藏整理的各类资源网站全都分享出来,都是完全免费的“资源”网站,质量非常高,一起来看看吧!1.虫部落网址:https://search.chongbuluo.com功能特点:聚合搜索平台,集成了100多个搜索引擎,包含了搜问题、找图片、听音乐、下文档资料、查代码等等,各种需要这个网站都有。其中还包含了学术搜索引擎,非常适

    2022年7月17日
    76
  • jsonobject转string数组_jsonobject.parsearray

    jsonobject转string数组_jsonobject.parsearray1.String转JSONObjectStringjsonMessage=”{\”语文\”:\”88\”,\”数学\”:\”78\”,\”计算机\”:\”99\”}”;JSONObject myJson=JSONObject.fromObject(jsonMessage);2.String转JSONArrayStringjsonMessage=”[{‘nu

    2022年10月4日
    2
  • plot绘图颜色_matlab画图plot详细

    plot绘图颜色_matlab画图plot详细所有颜色的名字及值:’aliceblue’:’#F0F8FF’,’antiquewhite’:’#FAEBD7′,’aqua’:’#00FFFF’,’aquamarine’:’#7FFFD4′,’azure’:’#F0FFFF’,’beige’:’#F5F5DC’,’bisque’:’#FFE4C4′,

    2022年10月15日
    3
  • idea永久激活码2021年_通用破解码

    idea永久激活码2021年_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
    263

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号