Talk:Man or boy test
From Wikipedia, the free encyclopedia
(nevermind) but, just how many levels of recursion is this supposed to have before anything returns? --Random832 03:06, 12 May 2007 (UTC)
| PROC name |
Max depth of recursions |
Total calls |
|---|---|---|
| a | 512 | 722 |
| b | 511 | 721 |
- Need a C0FFEE now?
I too am curious to know how/where/why Donald Knuth derived this strange algorithium. NevilleDNZ 09:32, 12 May 2007 (UTC) Well, that explains it. mozilla craps out after 1000 (i tried to implement it in javascript). --Random832 02:09, 18 May 2007 (UTC)
anyway, if anyone cares. C implementation
#include <stdio.h>
typedef struct s {
int k;
struct s *x1, *x2, *x3, *x4;
int(*f)(struct s* ref);
} *ps;
int B(ps ref) {
(ref->k)--;
return A(ref->k,ref,ref->x1,ref->x2,ref->x3,ref->x4);
}
int A(int k, ps x1,ps x2,ps x3,ps x4,ps x5) {
struct s x;
x.x1=x1; x.x2=x2; x.x3=x3; x.x4=x4;
x.k=k; x.f=B;
if(x.k <= 0)
return x4->f(x4) + x5->f(x5);
else
return B(&x);
}
int x(ps ref) {
return ref->k;
}
int main() {
struct s p; p.k= +1; p.f=x;
struct s m; m.k= -1; m.f=x;
struct s z; z.k= 0; z.f=x;
int val = A(10,&p,&m,&m,&p,&z);
printf("value is %d\n",val);
return 0;
}
--Random832 02:09, 18 May 2007 (UTC).
Contents |
[edit] Pending code snippet transplant/removal?
http://www.rosettacode.org/rosettacode/w/index.php?title=Talk:Man_or_boy_test —Preceding unsigned comment added by NevilleDNZ (talk • contribs) 00:32, 19 December 2007 (UTC)
[edit] Scheme
I turned the Common Lisp example into Scheme. Would it be useful to add that, given that there's already CL? Golwengaud (talk) 16:35, 24 December 2007 (UTC)
- Yes, I believe it would. 70.111.126.237 (talk) 16:16, 3 January 2008 (UTC)
-
- Done. Golwengaud (talk) 14:57, 6 January 2008 (UTC)
[edit] Common Lisp
There is a bug in the Common Lisp implementation: even with LET*, the scope of a local variable does not include its own initialization form, so the proposed solution does not in fact work (B is unbound). I intend to replace it shortly. 70.111.126.237 (talk) 16:16, 3 January 2008 (UTC)
[edit] Scala
Added a Scala implementation. This is without the object wrapper because you can run Scala programs directly as scripts. 128.214.11.51 (talk) 08:26, 17 March 2008 (UTC)

