2016-04-25 12 views
-2

Ich muss die Sylvester-Sequenz in Python kodieren. Die Formel für die Sequenz ist alsCoding Sylvester Sequenz

definiert

$$s_n = 1 + \prod_ { 
 
    i = 0 
 
}^{ 
 
    n - 1 
 
} 
 
s_i$$

Wo $s_0 = 2$.

Allerdings habe ich zu viel Mühe diesen Code in Python zu schreiben. Hat jemand einen Vorschlag, wie es geht?

+1

Was scheint das Problem zu sein? –

Antwort

2

Eine einfache rekursive Lösung in Python:

def sylvelster(n): 
    product = 1 
    for k in range(n): 
     product *= sylvelster(k) 
    return product + 1 

Oder Sie für das immer beliebter anspruchsvolle Suche Motto gehen könnten:

from functools import reduce 
from operator import mul 

def sylvelster(n): 
    return 1 + reduce(mul, map(sylvelster, range(n)), 1) 

Oder eine iterative Lösung (mit explizitem Stack) anstelle einem rekursive (mit implizitem Stack):

from functools import reduce 
from operator import mul 

def sylvelster(n): 
    products = [2] 
    for k in range(n): 
     products.append(1 + reduce(mul, products, 1)) 
    return products[-1]