2017-03-11 3 views
0

Der "Haupt" -Code funktioniert, um jeden einzelnen Binomialkoeffizienten zu berechnen, es sei denn (n = k + 1). Es ist irrsinnig - es sagt, es gibt eine Division durch Null Fehler, aber ich kann nicht sehen, warum. der Fehler tritt in der Hauptfunktion auf (d = n2/c). Irgendeine Idee warum?Binomialkoeffizienten - Division durch Nullfehler

def getInteger(prompt): 
    while True: 
     try: 
      num = int(input(prompt)) 
     except ValueError: 
      print("That is not an integer -- please try again") 
      continue 
     return num 

def factorial(f): 
    f = f 
    q = (f - 1) 
    fac = (f * q) 
    while (q) > 1: 
     q -= 1 
     fac = (fac * q) 
    return (fac) 


def main(): 
    n = getInteger("enter a factor:") 
    k = getInteger("enter a factor:") 
    while n >= k : 
     n2 = factorial(n) 
     k2 = factorial(k) 
     a = n - k 
     b = factorial(a) 
     c = b * k2 
     d = n2/c 
     print("n2 = {} k2 = {} a = {} b = {} c = {} d = {}" .format(n2, k2, a, b, c, d) ) 
     return 
    else: 
     print("n must be larger than k") 

if __name__ == '__main__': 
    main()  

main() 

Beachten Sie, dass ich die Berechnungen selbst implementieren muss, damit ich keine Bibliotheken verwenden kann.

Antwort

0

Ihre Fakultätsfunktion ist nicht korrekt für die Eingänge 0,1. Es gibt 0 für beide zurück, während es für beide von ihnen 1 zurückgeben sollte.

+0

Danke für schnelle Antwort, Problem gelöst –