C++实现泰波那契数
问题描述
泰波那契序列 Tn 定义如下:
T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2
给整数 n,请返回第 n 个泰波那契数 Tn 的值。
链接:https://leetcode-cn.com/problems/n-th-tribonacci-number
一开始我还是用的和写斐波那契数列一样的方法
class Solution {
public:
int tribonacci(int n)
{
if(n==0||n==1)
{
return n;
}
else if(n==2)
{
return 1;
}
else
{
return tribonacci(n-1)+tribonacci(n-2)+tribonacci(n-3);
}
}
};
但是在提交时显示“超出时间限制”,之后参考了评论里题友的回答
之后根据他的代码进行了改进
class Solution {
public:
long int tribonacci(int n)
{
switch(n)
{
case 0:
return 0;
case 1:
return 1;
case 2:
return 1;
case 3:
return 2;
case 4:
return 4;
default:
return 2*tribonacci(n-1)-tribonacci(n-4);
}
}
这里在定义函数的时候返回值数据类型是long int 型,是因为int型的数据范围比较小,在n为25时,它的泰波那契数为1389537。在之后提交时出现错误,才定义为 long int 型。
如果有更好的方法可以私信我一起交流。