F=(a,b=a)=>a?(b+~a)*F(--a,b-2)+F(a,b)*++b:+!b
Provalo online!
EnF( n , i )- F( n , i )nF'( n , i ) = ( - 1 )nF( n , i )FF'F'( n , i ) = ( i - n - 1 ) F'( n - 1 , i - 2 ) + ( i + 1 ) F'( n - 1 , i )
F=(a,b=a)=>a?-F(--a,b)*++b+F(a,b-=3)*(a-b):+!b
Provalo online!
Sorpreso di non aver ancora trovato una risposta JavaScript, quindi proverò.
s e c h (x)
Spiegazione
Tn: = t a n hn( t )Sn: = s e c hn( t )
dnSdtn= ∑i = 0nF( n , i ) Tn - ioSi + 1
dTdt= S2dSdt= - TS
ddt( Tun'SB)= a Ta - 1( S2) ( SB) + b Sb - 1( - TS) ( Tun')= a Ta - 1Sb + 2- b Ta + 1SB
b = i + 1a = n - i
ddt( Tn - ioSi + 1)= ( n - i ) Tn - i - 1Si + 3- ( i + 1 ) Tn - i + 1Si + 1= ( n - i ) T( n + 1 ) - ( i + 2 )S( i + 2 ) + 1- ( i + 1 ) T( n + 1 ) - iSi + 1
F( n , i )F( n + 1 , i + 2 )F( n + 1 , i )F( n , i )F( n - 1 , i - 2 )F( n - 1 , i )
F( n , i ) = ( n - i + 1 ) F( n - 1 , i - 2 ) - ( i + 1 ) F( n - 1 , i )
F( 0 , 0 ) = 1F( 0 , i ) = 0i ≠ 0
La parte correlata del codice a?-F(--a,b)*++b+F(a,b-=3)*(a-b):+!b
sta calcolando esattamente utilizzando la formula di ricorrenza sopra. Ecco la ripartizione:
-F(--a,b) // -F(n-1, i) [ a = n-1, b = i ]
*++b // *(i+1) [ a = n-1, b = i+1 ]
+F(a,b-=3) // +F(n-1, i-2) [ a = n-1, b = i-2 ]
*(a-b) // *((n-1)-(i-2)) [ a = n-1, b = i-2 ]
// which is equivalent to *(n-i+1)
T( 0 ) = 0S( 0 ) = 1EnSn + 1dnSdtnF(n,n)
F(0,0)F(n,i)=0i<0iEn=0nin0≤i≤ni=n+1n−i+1=n−(n+1)+1=00≤i≤nF(n,i)=0i>n
estensioni
Il codice può essere modificato per calcolare altre tre sequenze correlate:
Numeri tangenti (46 byte)
F=(a,b=a)=>a?F(--a,b)*++b+F(a,b-=3)*(a-b):+!~b
Numeri di secante (45 byte)
F=(a,b=a)=>a?F(--a,b)*++b+F(a,b-=3)*(a-b):+!b
Euler Zigzag Numbers (48 byte)
F=(a,b=a)=>a?F(--a,b)*++b+F(a,b-=3)*(a-b):!b+!~b
-i/2
, che producono-i
quando vengono aggiunti. Moltiplicalo per l'i
esterno della somma e otterrai1
.