|
|
A349977
|
|
Inverse Euler transform of the classical tribonacci numbers.
|
|
1
|
|
|
0, 1, 1, 1, 3, 4, 8, 13, 23, 38, 68, 114, 201, 343, 600, 1037, 1817, 3157, 5543, 9692, 17047, 29952, 52828, 93157, 164743, 291459, 516679, 916626, 1628684, 2896261, 5156925, 9189769, 16393652, 29268223, 52300907, 93529331, 167390342, 299787639, 537281476
(list;
graph;
refs;
listen;
history;
text;
internal format)
|
|
|
OFFSET
|
1,5
|
|
COMMENTS
|
The classical tribonacci numbers are defined a(n) = a(n-1) + a(n-2) + a(n-3) for n >= 3 with a(0) = 0 and a(1) = a(2) = 1.
See A349904 for the analogous sequence for the shifted tribonacci numbers A000073.
|
|
LINKS
|
|
|
MATHEMATICA
|
(* EulerInvTransform is defined in A022562. *)
EulerInvTransform[LinearRecurrence[{1, 1, 1}, {0, 1, 1}, 40]]
|
|
PROG
|
from functools import cache
from math import comb
def euler_inv_trans(a: callable, len: int):
@cache
def h(n: int, k: int):
if n == 0: return 1
if k < 1: return 0
bk = b(k)
R = range(int(bk == 0), 1 + n // k)
return sum(comb(bk + j - 1, j) * h(n - k * j, k - 1) for j in R)
@cache
def b(n: int): return a(n - 1) - h(n, n - 1)
return [b(n) for n in range(1, len)]
@cache
def tribonacci(n: int):
return sum(tribonacci(n - j - 1) for j in range(3)) if n >= 3 else min(n, 1)
print(euler_inv_trans(tribonacci, 40))
|
|
CROSSREFS
|
|
|
KEYWORD
|
nonn
|
|
AUTHOR
|
|
|
STATUS
|
approved
|
|
|
|