2016-02-25 30 views

回答

0

這是我會怎麼寫呢:

(defn tribonacci [a b c] 
    (lazy-seq (cons a (tribonacci b c (+' a b c))))) 

如果你想獲得ñ日tribonacci號碼,只要使用,例如,(tribonacci 0 0 1)然後調用該nth

0

您可以創建這些數字的懶序列,並從它採取必要的元素:

user> (def t (lazy-cat [1 1 2] (map +' t (rest t) (nthrest t 2)))) 
#'user/t 
user> (take 20 t) 
(1 1 2 4 7 13 24 44 81 149 274 504 927 1705 3136 5768 10609 19513 35890 66012) 

更換[1 1 2][0 1 1],如果你需要他們從0

+0

這是一個壞主意開始,一旦你意識到't'的某些元素,那些元素將不會被垃圾回收,因爲var保存在序列的頭部。 –

+0

是的,我知道,只是想展示懶惰序列的魔力。 (因爲問題是「有另一種方式」,猜猜這是可能的答案 – leetwinski