自学内容网 自学内容网

LeetCode 1137 第N个泰波那契数

探索泰波那契序列:从数学定义到代码实现

题目:

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

T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2.

给你整数 n,请返回第 n 个泰波那契数 Tn 的值。

泰波那契序列的定义:

泰波那契序列Tn有着别具一格的定义规则。与我们熟知的斐波那契序列相比,它的递推关系涉及到前三项。具体而言,泰波那契序列的初始值设定为T0=0,T1=1,T2=1,而对于n>0,其递推公式为Tn+3 = Tn+ Tn+1 + T+2。这意味着,要计算出第n项泰波那契数,我们需要依据前三项逐步推导。例如,根据定义依次计算可得:
T3=T0+T1+T2=0+1+1=2;
T4=T1+T2+T3=1+1+2=4;
T5=T2+T3+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时,直接返回对应的初始值。
  • 接着,初始化了变量 t0t1 和 t2,分别表示泰波那契序列的前三项。
  • 然后,使用 for 循环从 i=3开始迭代计算,在每次循环中,先计算出当前项的值(即前三项之和),并通过一系列赋值操作更新 t0t1 和 t2,为下一次迭代做准备。
  • 最后,当循环结束时,返回 t2,此时 t2 存储的即为第 n个泰波那契数。

 


原文地址:https://blog.csdn.net/qq_64604732/article/details/144425219

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!