Ciąg Schroedera rekurencyjnie

0

Rozwiązaywałem już rekurencyjnie kilka różnych ciągów ale ten sprawia mi kłopot. Głównie chodzi o to jak rozwiązać problem sumy w sposób rekurencyjny.

W rozwiązaniu nie może się znaleźć iteracja

Proszę o pomoc z góry dzięki :-)

user image

0
a(n) {
  if (n==0) then return=1
  else return= f(n-1) + e(n, 0, n-1)
}

e(n,p,k) {
  if (n>0) return= f(p) * f(k) + e(n-1, p+1, k-1)
  else return=0
}

powiedzmy, że funkcje f() oraz e() zwracają wartości 64-bitowe.
Policz f(27) w czasie mniejszym niż 0.01 sekundy.
Rekurencyjnie, bez iteracji oczywiście (żadne FOR WHILE LOOP GOTO)
f(27) == 2'588'758'890'960'637'798

0

obliczenie f(16) mojemu komputerowi zajęło nieco ponad 2 minuty,
obliczenie f(27) zajęłoby mojemu komputerowi około 8 lat ! :-)
warto więc pomyśleć jak to zrobić lepiej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1