SLOW(0)→0
SLOW(1)→1
SLOW(2)→SLOW(1)+SLOW(1)+SLOW(1)=1+1+1=3 [再帰1]
SLOW(3)→SLOW(1)+SLOW(2)+SLOW(2)=1+3+3=7 [再帰2]
SLOW(4)→SLOW(2)+SLOW(2)+SLOW(3)=3+3+7=13 [再帰3]
SLOW(5)→SLOW(2)+SLOW(3)+SLOW(4)=3+7+13=23 [再帰4]
SLOW(6)→SLOW(3)+SLOW(3)+SLOW(5)=7+7+23=37 [再帰5]
SLOW(7)→SLOW(3)+SLOW(4)+SLOW(6)=7+13+37=57 [再帰6]
SLOW(8)→SLOW(4)+SLOW(4)+SLOW(7)=13+13+57=83 [再帰7]
SLOW(9)→SLOW(4)+SLOW(5)+SLOW(8)=13+23+83=119 [再帰8]
SLOW(10)→SLOW(5)+SLOW(5)+SLOW(9)=23+23+119=165 [再帰9]
SLOW(11)→SLOW(5)+SLOW(6)+SLOW(10)=23+37+165=225 [再帰10]
SLOW(12)→SLOW(6)+SLOW(6)+SLOW(11)=37+37+225=299 [再帰11]
SLOW(13)→SLOW(6)+SLOW(7)+SLOW(12)=37+57+299=393 [再帰12]
・・・
って考えるとN-1回再帰処理してるんですねコレ
SLOW(N)とSLOW(N+1)の差を順に書き出して行くと
1,2,4,6,10,14,20,26,36,46,60,74,94,…
更に差の差を書き出して行くと
1,2,2,4,4,6,6,10,10,14,14,20,…
ふむ?もう少し簡単な数列の式に置き換えれそうですね
ぶっちゃけNの値に対して一つの決まった値を返す処理なので、必要分を予め計算しておいてデータ化して配列に格納して
都度読み込むって処理でも代用可能だったりします?