《算法零基础100讲》(第2讲) 数列

100 篇文章 547 订阅 ¥999.99 ¥499.90

零、写在前面

  这是《算法零基础100讲》 专栏打卡学习的第 2 天了。如果觉得本专栏太贵无法承受,在博主主页添加博主好友,获取 付费专栏优惠券。这 100 篇更新完,至少可以刷掉 300 题(作者每天会至少开放三个题),如果每天都打卡坚持下来,算法就妥妥的入门了。
  任何事情都是要靠坚持的,但是坚持这件事情本身就不容易,所以,我把它转化成了游戏的形式,任何有规则,有乐趣的行为都可以称之为游戏,如果你看到了这篇文章,想要加入我们的刷题行列,和群友一起打卡学习,那就赶紧那就赶紧 联系博主 吧。

一、概念定义

  在数学上,数列是一个很经典的概念,而在程序中,数列的逻辑形式是数组。经典的数列有:等差数列、等比数列、斐波那契数列 等等。
  在C语言中,数组的表示如下:a[i]代表数组的第 i i i 个元素,下标从 0 开始记,即a[0], a[1], a[2], a[3], ...分别对应的是数学上的数列: a 0 a_0 a0 a 1 a_1 a1 a 2 a_2 a2 a 3 a_3 a3 … 。

1、等差数列

  对于等差数列而言,任意相邻两个数的差都是相等的,这个值被称为公差,我们用 d d d 表示,那么 a 0 a_0 a0 作为数列的首项, a i a_i ai 的递推公式如下: a i = { a 0 i = 0 a i − 1 + d i > 0 a_i =\begin{cases} a_0 & i=0\\ a_{i-1} + d & i > 0\end{cases} ai={a0ai1+di=0i>0

2、等比数列

  对于等比数列而言,任意后一个数除上前一个数的商都是相等的,这个值被称为公比,我们用 q q q 表示,那么 a 0 a_0 a0 作为数列的首项, a i a_i ai 的递推公式如下: a i = { a 0 i = 0 a i − 1 × q i > 0 a_i =\begin{cases} a_0 & i=0\\ a_{i-1} \times q & i > 0\end{cases} ai={a0ai1×qi=0i>0

3、斐波那契数列

  对于斐波那契数列而言,除了第 0 项 和 第一项以外,任何一个项等于前两项之和,递推公式如下:
f ( n ) = { 0 n = 0 1 n = 1 f ( n − 1 ) + f ( n − 2 ) n > 1 f(n) = \begin{cases} 0 & n=0\\ 1 & n=1\\ f(n-1)+f(n-2)& n>1\end{cases} f(n)=01f(n1)+f(n2)n=0n=1n>1
  斐波那契数列,在理解递归时有着至关重要的作用,这个后面的章节我会将,目前只需要理解它的任意一项能够通过前两项计算出来即可。

二、题目描述

  斐波那契数,通常用 f ( n ) f(n) f(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:
f ( n ) = { 0 n = 0 1 n = 1 f ( n − 1 ) + f ( n − 2 ) n > 1 f(n) = \begin{cases} 0 & n=0\\ 1 & n=1\\ f(n-1)+f(n-2)& n>1\end{cases} f(n)=01f(n1)+f(n2)n=0n=1n>1 给定 n ( 0 ≤ n ≤ 30 ) n(0 \le n \le 30) n(0n30) ,请计算 f ( n ) f(n) f(n)

三、算法详解

  斐波那契数列的前两项是已知的,所以我们可以利用 C语言 中的数组,和对数组的遍历操作,就能把斐波那契数列的第 2 2 2 项,第 3 3 3 项,…,第 n n n 项依次求出来。

四、源码剖析

int fib(int n) {
    int f[31];                     // (1)
    f[0] = 0, f[1] = 1;            // (2)
    for(int i = 2; i <= n; ++i) {  // (3)
        f[i] = f[i-1] + f[i-2];    // (4)
    }
    return f[n];                   // (5)
}
  • ( 1 ) (1) (1) 定义一个数组,主要如果要求 n ≤ 30 n \le 30 n30,数组定义必须大于 30;
  • ( 2 ) (2) (2) 这里利用逗号表达式初始化前两项;
  • ( 3 ) (3) (3) 利用一个for循环遍历数组;
  • ( 4 ) (4) (4) 利用斐波那契数列的递推公式,计算每一项的值;
  • ( 5 ) (5) (5) 返回第 n n n 项的结果;

五、推荐专栏

🧡《C语言入门100例》🧡

六、习题练习

序号题目链接难度
1斐波那契数★☆☆☆☆
2泰波那契数★☆☆☆☆
3求1+2+…+n★☆☆☆☆
4单调数列★☆☆☆☆
5解压缩编码列表★☆☆☆☆
6连续整数求和★★☆☆☆
7(困难) 连续整数求和★★★☆☆
👇🏻添加 博主 获取付费专栏优惠券👇🏻
  • 24
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 30
    评论
评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

英雄哪里出来

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值