IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 递归算法和斐波那契数列 -> 正文阅读

[数据结构与算法]递归算法和斐波那契数列

目录

1、递归算法

(1)什么是递归?

(2)递归的三要素

2、斐波那契数列

(1)什么是斐波拉契数列?

(2)用递归方法求解斐波那契数列


1、递归算法

(1)什么是递归?

递归主要是指在函数的定义中使用函数自身的方法

顾名思义,递归主要包含两个意思,,这个是递归思想的精华所在。递归就是有去(递去)有回(归来)。“有去” 是指递归问题可以分解成若干个规模较小、与原问题形式相同的子问题,这些子问题可以和原问题用相同的方法来求解。“有回” 是指这些问题的演化过程是一个从大到小,并且最终会有一个明确的终点,一旦达到终点,就可以从终点原路返回,解决原问题。

更为直接的说法就是:递归的基本思想就是把大问题转化为相似的小问题解决。特别是在程序中的函数实现时,大问题的解决方案和小问题是一模一样的,所以就产生解决一个问题会调用函数本身的情况,这个也是递归的定义。

(2)递归的三要素

  1. 递归终止条件
  2. 递归终止时候的处理方法
  3. 递归中重复的逻辑提取,缩小问题规模。

递归终止条件

递归应该是有去有回的,这样递归就必须有一个明确的分界点,递归可以在什么时候结束。程序一旦达到这个临界点,就不用继续递归重复下去了。简单来说,递归的终止条件就是为了防止出现无限递归的情况

递归终止时的处理方法

递归需要一个终止条件,在达到递归的终止条件时,需要有一个对应终止条件的程序处理方法。一般而言,在达到递归的终止条件时,对应的问题都是很容易解决的,可以快速的给出问题的解决方案。

递归中重复的逻辑提取,缩小问题规模

递归的本质上还是要将一个大的问题分解成各个逻辑相同的小问题,所以递归过程中一个重要的步骤就是提取递归中重复的逻辑规则,以便利用相同的处理方式进行处理。

按照以上递归的三要素,递归程序的一般处理可以总结成下面的伪代码:

recursion(big_problem){
   if (end_condition){  //满足递归的终止条件
       solve_end_condition;  //处理终止条件下的逻辑
       end;  //递归结束
   }else {
       recursion(small_problem);  //递归中重复的逻辑提取,缩小问题规模
   }
}

2、斐波那契数列

(1)什么是斐波拉契数列?

斐波那契数列(Fibonacci sequence),也称之为黄金分割数列,由意大利数学家列昂纳多?斐波那契(Leonardo Fibonacci)提出。斐波那契数列指的是这样的一个数列:1、1、2、3、5、8、13、21、34、……,这个数列从第 3 项开始,每一项都等于前面两项之和。在数学上,斐波那契数列可以被递推的方法定义如下:

F(1)=1,F(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*)

斐波那契数列是数学上面一个经典的例子,并且在日常生活中有很多应用,他还与黄金分割有着密不可分的联系,而且当 n 趋向于无穷大时,前一项与后一项的比值越来越逼近黄金分割值 0.618。

(2)用递归方法求解斐波那契数列

利用递归的思想去求解斐波那契数列,当给出一个斐波那契中第几项的数字,然后求解出对应的斐波那契数值。

  1. 斐波那契数列的递归重复逻辑提取 ->?F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*)
  2. 斐波那契数列的递归终止条件 ->?F(1),F(2)?
  3. 斐波那契数列递归终止时候的处理方法 ->?F(1)=1,F(2)=1

使用 Java 代码来实现对斐波那契数列的计算:

/**
 * @author swadian
 * @date 2022/5/8
 * @Version 1.0
 * @describetion
 * 斐波那契数列(Fibonacci sequence)
 */
public class FibonacciSequence {
    /**
     * 斐波那契数列指的是这样的一个数列:1、1、2、3、5、8、13、21、34、……,
     * 这个数列从第 3 项开始,每一项都等于前面两项之和。
     * 在数学上,斐波那契数列可以被递推的方法定义如下:
     * F(1)=1,F(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*)
     */
    public static void main(String[] args) {
        System.out.println(fibonacci(9));
    }

    // 斐波那契数列数列的计算
    public static int fibonacci(int n){
        // 如果是终止条件,按照要求返回终止条件对应结果
        if(n == 1 || n == 2){
            return 1;
        }
        // 非终止条件,按照要求把大的问题拆分成小问题,调用自身函数递归处理
        return fibonacci(n - 1) + fibonacci(n - 2);
    }
}
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-05-09 12:59:05  更:2022-05-09 13:00:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 3:53:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码