[erlang-questions] Frying pan bug

Kostis Sagonas kostis@REDACTED
Fri Mar 2 12:56:12 CET 2012


On 03/02/2012 12:42 PM, Joe Armstrong wrote:
> -module(bug).
> -compile(export_all).
>
> bug() ->  p(0.3, 4, 11).
>
> c(N, M) ->   fac(M) div (fac(N)*fac(M-N)).
>
> fac(0) ->  1;
> fac(N) ->  N*fac(N-1).
>
> p(P, M, N) ->  1.0 - math:pow(1-P, N-M)*c(N, M).
>
> Running bug:bug() tries to turn my machine into a frying pan
>
> Should this be renamed frying_pan.erl ?

No,perhaps it should be renamed to "factorial_not_defined_properly.erl".

If you write the factorial function as follows:

   fac(0) -> 1;
   fac(N) when N > 0 -> N*fac(N-1).

you will be able to see what's happening.

Cheers,
Kostis



More information about the erlang-questions mailing list