| Karim Belabas on Wed, 17 Jul 2019 12:03:09 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Re: Using local variable for memoizing in recursion |
* Дмитрий Рыбас [2019-07-17 11:58]:
> Karim,
>
> >Here's my take:
>
> >
> >\\ vecsum(pnkv_4(n,k)), assuming n > 1
> >pnk_4(n,k) =
> >{ my(k1 = k+1, kx = k1, a = 1, t = vector(k1, i, vector(k)));
> > t[k1][1] = 1;
> > for (i = 1, n-1,
> > my(ky = a);
> > t[a] = vector(k, j, if (!(ky--), ky = k1);
> > if (j == 1, t[ky][1]
> > , t[kx][j-1] + t[ky][j]));
> > kx = a; if (a++ > k1, a = 1));
>
> -------------------------------^
>
> if a==1, then vecsum(t[a-1]) below won't work :-) That's a case for
> example for pnk_4(4,2)
>
> > vecsum(t[a-1]);
> >}
Indeed, Mike Day pointed this out¹. The vecsum should be replaced by
vecsum(t[kx]);
Cheers,
K.B.
¹: http://pari.math.u-bordeaux.fr/archives/pari-users-1907/msg00017.html
--
Karim Belabas, IMB (UMR 5251) Tel: (+33) (0)5 40 00 26 17
Universite de Bordeaux Fax: (+33) (0)5 40 00 21 23
351, cours de la Liberation http://www.math.u-bordeaux.fr/~kbelabas/
F-33405 Talence (France) http://pari.math.u-bordeaux.fr/ [PARI/GP]
`