递推(C语言)

07-12 1633阅读

文章目录

  • 1.斐波那契数列
  • 2.太波那契数列
  • 3.二维递推问题
  • 4.实战
    • 4.1 力扣509 斐波那契数
    • 4.2 力扣70 爬楼梯
    • 4.3 力扣119 杨辉三角||

      递推最通俗的理解就是数列,递推和数列的关系就好比 算法 和 数据结构 的关系,数列有点

      递推(C语言)
      (图片来源网络,侵删)

      像数据结构中的线性表(可以是顺序表,也可以是链表,一般情况下是顺序表),而递推就是一

      个循环或者迭代的枚举过程。

      递推本质上是数学问题,所以有同学问算法是不是需要数学非常好,也并不是,你会发现

      这些数学只不过是初中高中我们学烂的东西,高考都经历了,这些东西又何足为惧!?

      1.斐波那契数列

      斐波那契数(通常用F(n)表示)形成的序列称为 斐波那契数列 。该数列由0和1开始,后面

      的每一项数字都是前面两项数字的和。也就是:

      F(0)=0,F(1)=1

      F(n)=F(n -1)+ F(n- 2),其中n>1,给定n(0 ≤n≤ 30),请计算 F(n)

      拿到这个题目,我们首先来看题目范围,最多不超过 30,那是因为斐波那契数的增长速度很

      快,是指数级别的。所以如果n 很大,就会超过 c语言 中32位整型的范围。这是一个最基础的递

      推题,递推公式都已经告诉你了,我们要做的就是利用一个循环来实现这个递推。

      我们只需要用一个 F[31]数组,初始化好 F[0]和 F[1],然后按照给定的公式循环计算就可以。

      int febonacci(int n) {  
          int F[30] = {0,1};  
          for (int i = 2; i  
      

      2.太波那契数列

      泰波那契序列Tn定义如下:

      T(0) = 0, T(1) = 1,T(2)=1

      且在 n>2的条件下 T(n)=T(n-1)+T(n-2)+T(n-3),给你整数n,请返回第n个泰波那契

      数T(n)的值。

      如果已经理解斐波那契数列,那么这个问题也不难,只不过初始化的时候,需要初始化前三个数,

      并且在循环迭代计算的时候,当前数的值需要前三个数的值累加和。像这样:

      int tribonacci(int n) {  
          int F[30] = {0,1,1};  
          for (int i = 3; i  
      

      3.二维递推问题

      像斐波那契数列这种问题,是一个一维的数组来解决的,有些时候,一维解决不了的时候,我

      们就需要升高一个维度来看问题了。

      长度为n(1

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]