Notes

Chapter 11: The Notion of Computation

Section 3: The Phenomenon of Universality


Universality in Mathematica

As an example of how different primitive operations can be used to do the same computation, the following are a few ways that the factorial function can be defined in Mathematica:

f[n_] := n!

f[n_] := n f[n - 1]; f[1] = 1

f[n_] := Product[i, {i, n}]

f[n_] := Module[{t = 1}, Do[t = t i, {i, n}]; t]

f[n_] := Module[{t = 1, i}, For[i = 1, i n, i++, t = i]; t]

f[n_] := Apply[Times, Range[n]]

f[n_] := Fold[Times, 1, Range[n]]

f[n_] := If[n 1, 1, n f[n - 1]]

f[n_] := Fold[#2[#1] &, 1, Array[Function[t, # t] &, n]]

f = If[#1 1, 1, #1 #0[#1 - 1]] &



Image Source Notebooks:

From Stephen Wolfram: A New Kind of Science [citation]