Evaluate binomial coefficients: Difference between revisions

From Rosetta Code
Content added Content deleted
(→‎Tcl: Added implementation)
Line 28: Line 28:
return nValue;
return nValue;
}</lang>
}</lang>

=={{header|Tcl}}==
This uses exact arbitrary precision integer arithmetic.
<lang tcl>package require Tcl 8.5
proc binom {n k} {
set pTop 1
for {set i $n} {$i > $n - $k} {incr i -1} {
set pTop [expr {$pTop * $i}]
}
set pBottom 1
for {set i $k} {$i > 1} {incr i -1} {
set pBottom [expr {$pBottom * $i}]
}
return [expr {$pTop / $pBottom}]
}</lang>
Demonstrating:
<lang tcl>puts "60_C_30 = [binom 60 30]"</lang>
Output:
<pre>60_C_30 = 118264581564861424</pre>

Revision as of 00:26, 12 April 2010

Task
Evaluate binomial coefficients
You are encouraged to solve this task according to the task description, using any language you may know.

This programming task, is to calculate ANY binomial coefficient.

This formula is recommended: n!/k!(n-k)!

C++

<lang cpp>double Factorial(double nValue)

  {
      double result = nValue;
      double result_next;
      double pc = nValue;
      do
      {
          result_next = result*(pc-1);
          result = result_next;
          pc--;
      }while(pc>2);
      nValue = result;
      return nValue;
  }

double EvaluateBinomialCoefficient(double m_nValue, double nValue)

  {
      double result;
      result = (Factorial(m_nValue))/(Factorial(nValue)*Factorial((m_nValue - nValue)));
      nValue = result;
      return nValue;
  }</lang>

Tcl

This uses exact arbitrary precision integer arithmetic. <lang tcl>package require Tcl 8.5 proc binom {n k} {

   set pTop 1
   for {set i $n} {$i > $n - $k} {incr i -1} {

set pTop [expr {$pTop * $i}]

   }
   set pBottom 1
   for {set i $k} {$i > 1} {incr i -1} {

set pBottom [expr {$pBottom * $i}]

   }
   return [expr {$pTop / $pBottom}]

}</lang> Demonstrating: <lang tcl>puts "60_C_30 = [binom 60 30]"</lang> Output:

60_C_30 = 118264581564861424