当前位置:   article > 正文

力扣 [1137] [简单] [第 N 个泰波那契数]_给你整数 n,请返回第 n 个泰波那契数 tn 的值 python

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

1137. 第 N 个泰波那契数

难度简单86收藏分享切换为英文接收动态反馈

泰波那契序列 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

提示:

  • 0 <= n <= 37
  • 答案保证是一个 32 位整数,即 answer <= 2^31 - 1

-------------------------------------分割线------------------------------------------

一看到这个题目,相信很多人都会像我一样,直接按递归来写,提交代码之后,不好意思,执行超时了。深思熟虑之后,只能使用动态规划,不适用递归,空间换时间

代码如下

  1. int tribonacci(int n){
  2. #if 0 //纯递归,超时
  3. if(n==0)
  4. return 0;
  5. if(n==1)
  6. return 1;
  7. if(n==2)
  8. return 1;
  9. return tribonacci(n-1)+tribonacci(n-2)+tribonacci(n-3);
  10. #else//动态规划,空间换时间
  11. int *f;
  12. f = malloc(sizeof(int)*(n+3));//多三个,这样输入n 为0,1,2的时候,给数组赋值不踩内存
  13. f[0]=0;
  14. f[1]=1;
  15. f[2]=1;
  16. for(int i=3;i<=n;i++){
  17. f[i]=f[i-1]+f[i-2]+f[i-3];
  18. }
  19. return f[n];
  20. #endif
  21. }

另外,我觉得评论区会有秀儿会穷举出来,因为题目n的范围也就[0, 37],被我猜到了。。。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/948611
推荐阅读
相关标签
  

闽ICP备14008679号