题目来源于力扣——1137. 第 N 个泰波那契数 - 力扣(LeetCode) (leetcode-cn.com)
泰波那契序列 Tn 定义如下:
T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2
给你整数 n,请返回第 n 个泰波那契数 Tn 的值。
示例 1:
输入:n = 4
输出:4
解释:
T_3 = 0 + 1 + 1 = 2
T_4 = 1 + 1 + 2 = 4
示例 2:输入:n = 25
输出:1389537
根据题目我们可知,要求出第n个泰波数的值,我们只需要知道其前三项的值。
题目已经给出了这个数列第一项和第二项和第三项的值了,所以我们可以求出后面所有的值
代码如下:
#include<stdio.h>
int fib(int n)
{
int a = 0; //为数列第一项赋值
int b = 1; //为数列第二项赋值
int c = 1; //为数列第三项赋值
int d = 0; //求数列第一项、第二项、第三项的和
if (n == 0) {
return 0;
}
if (n <= 2) {
return 1;
}
while (n > 2)
{
d = a + b + c;
a = b;
b = c;
c = d;
n--;
}
return d;
}
int main()
{
int n = 0;
scanf("%d",&n);
int ret = fib(n);
printf("%d", ret);
return 0;
}
其实这题跟求斐波那契数列的第n个数的方法是一模一样的,只不过斐波那契数列要知道前两项的值,如果大家对这题还有疑惑,可以去我的主页看一下详细的斐波那契数列的求法