a[1] = 1;
a[n_] := Module[{sum = 0},
r = 1 + Sum[a[k], {k, n - 1}];
x = r;
While[sum <= 1, sum += 1/x++];
p = x - 2;
p - r + 1]
Table[a[n], {n, 6}]
{1, 2, 6, 16, 43, 117}
Результат для a[4]
равен 16, а не 14.
Для иллюстрации , когда n = 4
r = 1 + Sum[a[k], {k, 4 - 1}]
= 1 + a[1] + a[2] + a[3] (* refer to established results for a[n] *)
= 1 + 1 + 2 + 6 = 10
sum = 0;
x = r;
While[sum <= 1, sum += 1/x++];
p = x - 2;
p - r + 1
16
или в другой форме
Total[Table[1/s, {s, 10, 25}]] <= 1 (* True *)
p - r + 1 = 25 - 10 + 1 = 16
Использование памятка , как упомянутый ogerard
Clear[a]
a[1] = 1;
a[n_] := a[n] = Module[{sum = 0},
r = 1 + Sum[a[k], {k, n - 1}];
x = r;
While[sum <= 1, sum += 1/x++];
p = x - 2;
p - r + 1]
только сокращает время следующего запуска на 9 секунд
Timing[Table[a[n], {n, 14}]]
{40.8906, {1, 2, 6, 16, 43, 117, 318 865, 2351, 6391, 17372, 47222, 128363, 348927}}