1.第N个泰波拉契数
//泰波那契序列 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。 // // Related Topics 递归
这题的考点无疑是递归,但是我们需要注意的是如果我们直接去返回加出来的数可能会超出运行时间,这样运行量就大了,我们需要做一个数组来存储算出来的元素,比如当n=7的时候,这个时候值已经算出来了,当我们计算n=8的时候需要这个数,我们直接去数组中去找,如果这个时候不为0,说明我们已经算出来过,就不用再去进行计算了。这样大大节省了计算成本。
class Solution {
int[] dp = new int[38];
public int tribonacci(int n) {
if(dp[n] != 0){
return dp[n];
}
if(n==0){
return 0;
}else if(n==1 || n==2){
return 1;
}else{
int res = tribonacci(n-1)+tribonacci(n-2)+tribonacci(n-3);
dp[n] = res;
return res;
}
}
}