Dwumian Newtona w postaci rekurencyjnej

0
    def dwumianREK(n, k):
        if k == 0 or k == n:
            return 1
        else:
            return n/k * dwumianREK(n-1,k-1)

Wiem że są inne definicje dwumianu newtona, ale rekurencyjnie gdy na kartce liczę:
(54) = 5/4 * 4/3 * 3/2 * 2/1 to wychodzi mi poprawnie 5, podczas gdy oblicza to dla mnie podana fcja, to otrzymuję błędny wynik 2.

Z góry dziękuję za pomoc

0

Która wersja Pythona? W Pythonie 2 5/4 = 4/3 = 3/2 = 1. Użyj wyrażenia

return float(n)*dwumianRek(n-1,k-1)/k
1
def newton(n, k):
    if k == 0 or k == n:
        return 1
    else:
        return float(n) / k * newton(n - 1, k - 1)

'Winnym' jest różnica między działaniami całkowitoliczbowymi i zmiennoprzecinkowymi.
5/4 = 1, podczas gdy 5.0/4.0 = 1.25.

0
msm napisał(a):
def newton(n, k):
    if k == 0 or k == n:
        return 1
    else:
        return float(n) / k * newton(n - 1, k - 1)

'Winnym' jest różnica między działaniami całkowitoliczbowymi i zmiennoprzecinkowymi.
5/4 = 1, podczas gdy 5.0/4.0 = 1.25.

I już wszystko jasne. Dzięki za pomoc

1 użytkowników online, w tym zalogowanych: 0, gości: 1