Sample Recursive Functions

These are some sample recursive functions used as demonstration and quiz questions.

by Ron Eaglin

HTML

<input type="button" value="Go 1" onclick="alert(f(3))"/>
<input type="button" value="Go 2" onclick="alert(f1(2,2))"/>
<input type="button" value="Go 3" onclick="alert(f2(17))"/>
<input type="button" value="Go 4" onclick="alert(fb(5,2))"/>
<input type="button" value="Go 5" onclick="alert(f3(100))"/>
<input type="button" value="Go 6" onclick="alert(f4(2.00))"/>
<input type="button" value="Go 7" onclick="alert(f5(2,3,4))"/>

JavaScript

function f(n) {
  if (n == 4) return n;
  return 2*f(n+1);
}

function f1(x,y){
  if (x ==0) return y;
  return f1(x-1, x+y);
}

function f2(n) {
  if (n == 0) return "";
  return n % 2 + " " + f2(parseInt(n/2));
}

function fa(x, y){
  if (y == 0) return 0;
  return (x + fa(x, y-1));
}

function fb(x, y) {
  if (y == 0) return 1;
  return fa(x, fb(x, y-1));
}

function f3(n){
  if (n <= 1) return 1;
  if (n%2 == 0) return f3(parseInt(n/2));
  return f3(parseInt(n/2)) + f3(parseInt(n/2) + 1);
}

function f4(x){
  if (Math.abs(x*x - 4) < 0.01) return x;
  return f(x/3 + 2/x);
}

function f5(n, a, b){
  if (n <= 0) return 0;
  return f5(n-1, a, b+n) + n + a + b + f5(n-1, b, a+n);
}