I hacked up a recursive function in Java for a homework problem in my Stats class, that looked something like this:

```
public static int d (int k, int n) {
 if (n == 1) return 1;
 else if (n > k) return 0;
 else return n*d(k-1, n) + n*d(k-1,n-1);
}

```

I then plugged (20, 8) into this function, and got 998,925,952. My professor, however, said that this answer was wrong, and after rethinking my code over and over again, I decided to try the same thing in Matlab:

```
function t = d(k,n)
  t = 0;
  if n == 1
    t = 1;
  elseif n > k
    t = 0;
  else
    t = n*d(k-1, n) + n*d(k-1, n-1);
  end

```

This function, apparently, gave me the right answer with the above input, 6.1169 \* 10^17.

This has been bugging me all day, and I have absolutely no idea why two seemingly identical programs in two different languages would give me completely different results. Can anyone help explain this?