遞歸----第 N 個泰波那契數

遞歸----第 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。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/n-th-tribonacci-number
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。

解題思路

遞歸+記憶
此題一看就是遞歸,但是第一次提交時只使用了遞歸,提示超時,所以加上了記憶的方法,所謂記憶即將已計算過的結果存儲下來,下次不必再做遞歸,直接用即可

提交答案

class Solution {
    public static final List<Integer> list;
    static{
        //初始化存儲結果的list,用於記憶已計算過的結果
        list = new ArrayList<Integer>(38);
        for(int i=0;i<=37;i++){
            list.add(-1);
        }
    }
    public int tribonacci(int n) {
        //先查找之前是否計算過
        if(list.get(n) > -1){
            return list.get(n);
        }
        if(n == 0){
            list.set(n, 0);
            return 0;
        }
        if(n == 1 || n == 2){
            list.set(n, 1) ;
            return 1;
        }
        list.set(n, tribonacci(n-3) + tribonacci(n-2) + tribonacci(n-1));
        return list.get(n);   
    }
}

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章