LeetCode 1137 第N个泰波那契数
探索泰波那契序列:从数学定义到代码实现
题目:
泰波那契序列 Tn 定义如下:
T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2.
给你整数 n
,请返回第 n 个泰波那契数 Tn 的值。
泰波那契序列的定义:
泰波那契序列有着别具一格的定义规则。与我们熟知的斐波那契序列相比,它的递推关系涉及到前三项。具体而言,泰波那契序列的初始值设定为0=0,1=1,2=1,而对于n>0,其递推公式为n+3 = n+ n+1 + +2。这意味着,要计算出第n项泰波那契数,我们需要依据前三项逐步推导。例如,根据定义依次计算可得:
3=0+1+2=0+1+1=2;
4=T1+2+3=1+1+2=4;
5=2+3+T4=1+2+4=7;以此类推.…
代码实现思路
为了计算第个泰波那契数,我们可以采用迭代的方法。这种方法基于泰波那契序列的递推特性,从初始的三个已知项开始,逐步计算出后续的项,直到得到第n项。
#include <stdio.h>
// 计算第n个泰波那契数的函数
int tribonacci(int n) {
if (n == 0) return 0;
if (n == 1 || n == 2) return 1;
int t0 = 0, t1 = 1, t2 = 1;
int temp;
for (int i = 3; i <= n; i++) {
temp = t0 + t1 + t2;
t0 = t1;
t1 = t2;
t2 = temp;
}
return t2;
}
int main() {
int n;
printf("请输入想要获取泰波那契数的序号n: ");
scanf("%d", &n);
int result = tribonacci(n);
printf("第 %d 个泰波那契数是: %d\n", n, result);
return 0;
}
在上述代码中:
- 首先,通过
if
语句处理了边界情况,即当 为0 、1 或 2时,直接返回对应的初始值。 - 接着,初始化了变量
t0
、t1
和t2
,分别表示泰波那契序列的前三项。 - 然后,使用
for
循环从 i=3开始迭代计算,在每次循环中,先计算出当前项的值(即前三项之和),并通过一系列赋值操作更新t0
、t1
和t2
,为下一次迭代做准备。 - 最后,当循环结束时,返回
t2
,此时t2
存储的即为第 n个泰波那契数。
原文地址:https://blog.csdn.net/qq_64604732/article/details/144425219
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!