2017-07-09 88 views
-5

所以我一直在編寫一些Pascal三角編碼。Python,rekursion multiple函數int一個,帕斯卡三角形

其中你給出了兩個數字n和k,並且你得到了你的金字塔中數字的值。

n = i = float(input("Geben Sie n Zahl ein: ")) 

k = r = float(input("Geben Sie k Zahl ein: ")) 
ir = i -r 

def zwischenergebnis(ir): 
    if ir ==1: 
     return 1 
    else: 
     ri = ir * zwischenergebnis(ir-1) 
     return ri 

def jo(k): 
    if k == 1: 
     return 1 
    else: 
     ka = k * jo(k-1) 
     return ka 

def factorial(n): 

    if n == 1: 
     return 1 
    else: 
     res = n * factorial(n-1) 

     return res 

b = factorial(n) 



def nenna(ir,k): 
    return zwischenergebnis(ir) * jo(k) 




a = nenna(ir,k) 
b = factorial(n) 
Ergebnis = b/a 
print(Ergebnis) 

它的工作,工作得很好,但我怎麼能套用這一切問題doingness這個功能:

def dynCompNChooseK(n, k): 
    print('Parameter n:') 
    print(n) 
    print('Parameter k:') 
    print(k) 

    Should be implemented hier. 

    result = 10 ## 5 above 3 # 
    return result 

回答

0

您可以使用本地的函數,它們在函數的函數。使用這些,你的程序變得這樣的事情:

def dynCompNChooseK(n, k): 
    print('Parameter n:') 
    print(n) 
    print('Parameter k:') 
    print(k) 

    def zwischenergebnis(ir): 
     if ir ==1: 
      return 1 
     else: 
      return ir * zwischenergebnis(ir-1) 

    def jo(k): 
     if k == 1: 
      return 1 
     else: 
      return k * jo(k-1) 

    def factorial(n): 
     if n == 1: 
      return 1 
     else: 
      return n * factorial(n-1) 

    def nenna(ir,k): 
     return zwischenergebnis(ir) * jo(k) 

    ir = n - k 
    b = factorial(n) 
    a = nenna(ir,k) 
    b = factorial(n) 
    return b/a 

有相當一些事情在你的代碼改進,如果你要我解釋這些評論如下...

編輯

由於您的程序實際上計算了給定的nk的二項式係數,您的程序可以這樣簡化:

def dynCompNChooseK(n, k): 
    print('Parameter n:', n) 
    print('Parameter k:', k) 

    def fak(n): 
     """Calculates the factorial n! given the positive integer n""" 
     return 1 if n == 1 else n * fak(n-1) 

    return fak(n)/(fak(k)*fak(n-k))