vb.net - pascal triangle gives overflow for 13 -
i wrote code output pascal triangle in multi-line textbook. program works fine inputs between 1 12 gives overflow error once value of 13 inputed.
is there modifications can make enable program accurately give outputs 13 , higher?
here code used:
public class pascal_triangle private function factorial(byval k integer) integer if k = 0 or k = 1 return 1 else return k * factorial(k - 1) end if end function private sub btngen_click(sender object, e eventargs) handles btngen.click dim ncr integer dim i, j, k integer dim output string output = "" j = val(txtcolumn.text) k = 0 j = 0 k dim fact, fact1, fact2 integer fact = factorial(k) fact1 = factorial(k - i) fact2 = factorial(i) ncr = fact / (fact1 * fact2) txtoutput.text += str(ncr) & output next txtoutput.text += vbcrlf next end sub end class
the overflow because 13! big fit in integer.
the largest representable integer (32-bit signed)
- 2147483647 (0x7fffffff == 01111111 11111111 11111111 11111111b)
so :
12! = 479001600 maxint = 2147483647 13! = 6227020800 if want use larger numbers need use larger number type. next larger types long (64-bit signed, max 9223372036854775807) or, purposes, ulong (unsigned 64-bit, since don't need negative numbers, twice @ 18446744073709551615).
this let calculate to20!, 2432902008176640000. numbers larger need using either biginteger or other dedicated libraries allow holding , calculating arbitrarily large numbers.
alternatively, can other methods of computing arbitrary row without using factorials.
Comments
Post a Comment