home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / MAGAZINE / DDJ9309.ZIP / 1993-SEP.ZIP / RECUR.ASC < prev    next >
Text File  |  1993-07-26  |  2KB  |  126 lines

  1. _RECURSIVE WORLDS_
  2. by Clifford A. Pickover
  3.  
  4. Example 1:
  5.  
  6. (a)
  7.  
  8. 1 Factorial(X);
  9. 2     IF X=0 then Factorial=1
  10. 3     ELSE Factorial=X*Factorial(X-1)
  11. 4 END
  12.  
  13.  
  14. (b)
  15.  
  16. 1 Fibonacci(X)
  17. 2      IF N <= 1 then Fibonacci=1
  18. 3      ELSE Fibonacci=Fibonacci(N-1)+Fibonacci(N-2)
  19. 4 END
  20.  
  21.  
  22. (c)
  23.  
  24. Fibonacci
  25.     F[0]=1;F[1]=1;
  26.     For i = 2 to 30
  27.            F[i]=F[i-1]+F[i-2]
  28.     END
  29. END
  30.  
  31.  
  32. Example 2:
  33.  
  34.  
  35. 1 S = 7; Sz = S-1; M = 20;
  36. 2 for (h=1; h<=M; h++) {
  37. 3      /* rand returns a value between 0 and 32767 */
  38. 4      v = ((float) rand()/32767.)*S;
  39. 5      w = ((float) rand()/32767.)*S;
  40. 6      a[v][w]=1;
  41. 7      a[Sz-v][w]=1;
  42. 8      a[Sz-v][Sz-w]=1;
  43. 9      a[v][Sz-w]=1;
  44. 10 }
  45.  
  46. (b)
  47.  
  48.  N=0; Sz = S - 1;
  49.  for (i=0; i<=S; i++)
  50.    for (j=0;j<=S; j++)
  51.           if (a[i][j]==1)
  52.           {N++; x[h]=i-Sz/2; y[h]=j-Sz/2;}
  53.  
  54. (c)
  55.  
  56.   for (i=1; i<=N; i++) {
  57.      for (j=1; j<=N; j++) {
  58.          for (k=1; k<=N; k++) {
  59.                X = alpha[1]*x[h]+alpha[2]*x[h]+alpha[3]*x[h]
  60.                Y = alpha[1]*y[h]+alpha[2]*y[h]+alpha[3]*y[h]
  61.                PlotSquareAt(X,Y)
  62.          }
  63.      }
  64.  }
  65.  
  66.  
  67.  
  68. Example 3:
  69.  
  70. (a)
  71.  
  72.  /* initialize p array to zero */
  73.  for(i=0; i<900; i++) p&lbrk.i&rbrk.=0;
  74.  total=500000;
  75.  /* catalog 500000 vector lengths */
  76.  for(i=0; i<total; i++) {
  77.       rnd1 = ((float) rand()/32767.)*Npts;
  78.       rnd2 = ((float) rand()/32767.)*Npts;
  79.       xterm = corx[rnd1]-corx[rnd2];
  80.       yterm = cory[rnd1]-cory[rnd2];
  81.       dist = sqrt (xterm*xterm+yterm*yterm);
  82.       dist = dist+.5;
  83.       p[(int)dist]++;
  84.  }
  85.  
  86.  
  87. (b)
  88.  
  89.  for(i=1; i<900;i++) {
  90.    ps[i]=.25*(float)p[i-1]+.5*(float)p[i]+.25*(float)p[i+1];
  91.  }
  92.  
  93.  
  94. Example 4:
  95.  
  96. (a)
  97.  
  98.    sum=0; summ=0;
  99.    for(i=0; i<900;i++) {
  100.         summ=summ+p[i]; 
  101.         sum=sum+p[i]*i*i;
  102.    }
  103.    Rg=sqrt(sum/((float) summ*2)) ;
  104.  
  105. (b)
  106.  
  107.  Sz = S - 1;
  108.  for (h=1; h<=40; h++) {
  109.       v = ((float) rand()/32767.)*S;
  110.       w = ((float) rand()/32767.)*S;
  111.       a[v][w]=1;
  112.       a[Sz-v][w]=1;
  113.  }
  114.  
  115. (c)
  116.  
  117.  Sz = S - 1;
  118.  for (h=1;i h<=30; h++) {
  119.      v = ((float) rand()/32767.)*S;
  120.  
  121.      w = ((float) rand()/32767.)*S;
  122.      a[v][w]=1;
  123.      a[Sz-v][Sz-w]=1;
  124.  }
  125.  
  126.