2016-09-14 6 views
0

Ich kam in den folgenden zwei Funktionsdefinitionen:Unterschied zwischen n_times und Kette

function n_times(f, n) { 
    if (n === 1) {return f;} 
    else { 
     return function(x) { 
      return f((n_times(f, n - 1)) (x)); 
     } 
    } 
} 

function chain(f, n) { 
    if(n === 1) { 
     return f; 
    } else { 
     return (chain(f, n - 1)) (f); 
    } 
} 

Ich kann nicht den Unterschied zwischen den beiden scheinen, um herauszufinden. das Substitutionsmodell Anwendung schlägt vor, die folgenden:

für Kette: chain(f, 3) (x) = f(f(f(x))))

für n_times: n_times(f, 3) (x) = f((f(f(x))) (x))

So gibt mehr als eine Variable im Fall von n_times sind.

Jede Hilfe würde sehr geschätzt werden.

Vielen Dank im Voraus.

Antwort

3

Sie müssen irgendwo in Ihrer Substitution falsch gegangen sein. Mit den Funktionsdefinitionen gaben Sie (die übrigens nicht wirklich Standard sind), dann ist es

n_times(f, 3) (x) 
≡ function(x) { return f(n_times(f, 2)(x)) } (x) 
≡ f(n_times(f, 2)(x)) 
≡ f(function(x) { return f(n_times(f, 1)(x)) } (x)) 
≡ f(f(n_times(f, 1)(x))) 
≡ f(f(f(x))) 

und

chain(f, 3) (x) 
≡ chain(f, 2) (f) (x) 
≡ chain(f, 1) (f) (f) (x) 
≡ f (f) (f) (x) 
+0

ich sehe, muss ich irgendwo vermasselt haben. Aber in beiden Fällen sind die beiden gleichwertig? Danke – user3146687

+0

Nein, offensichtlich nicht, sie erweitern sich auf etwas anderes. Überlegen Sie auch, welchen Typ 'f' in den beiden Ausdrücken haben müsste. – Bergi