(function() { var Hofstadter; // Hofstadter's chaotic function Q // computed using a dynamic programming function q(n) { var A = [], i; A[0] = 0 A[1] = 1; A[2] = 1; for (i = 3; i <= n; i++) { A[i] = A[i - A[i - 1]] + A[i - A[i - 2]]; } return A[n]; } Hofstadter = {}; Hofstadter.function = {}; Hofstadter.function.Q = q; d3.Hofstadter = Hofstadter; })();