2016-06-25 31 views
1

私は関数を引数としてとり、指定された回数だけその関数を実行する新しい関数を返す関数を書こうとしています。私は機能があった場合例えばPython:与えられた関数をn回実行する関数を返す

は、:私はこれを持って

doubleThrice(3) # Returns 18 but should it? 

doubleThrice = repeatFunction(doubleNumber, 3) 

私はこれを取得する必要があります:

def doubleNumber(num): 
    return num * 2 

を、私は次のことをやりました遠いですが、私はそれが私が望むことをしているとは思わない:

def repeatFunction(func, n): 
    def inner(inp): 
     return func(inp) * n 
    return inner 

私はそれが関数を1回実行していて、その結果にn回乗算しているという印象を受けます。

私はrepeatFunction関数の中で必要とする関数をどのように構築し、それを返すか、オンラインヘルプのいずれも本当に私には意味をなさないとは思いません。

+0

doubleThriceは(3)あなたの例では18を返します。 –

+0

申し訳ありませんが、これはなぜ投票されていますか?私は他の人が以前に心配していたと確信している質問の合理的な例のようなものを提供しました。ここで良い質問をすることは不可能だと思われる。 –

+0

@ dot.Pyですか?私は実際に私の与えられた機能がこのような状況で何をしているのかは分かりません。私が記述したことをうまくやり遂げる方法に関するいくつかのガイダンスを探していました:) –

答えて

2

あなたは機能を数回適用したい場合、あなたはおそらく何回も繰り返されることをループ必要があります。

def repeatFunction(func, n): 
    def inner(inp): 
     for i in range(n): 
      inp = func(inp) 
     return inp 
    return inner 
+1

はい!これはまさに私が必要としていたものであり、私はこれをもう一度試して誓っていたかもしれません...繰り返された関数呼び出しで答えを複合し続けるのに完璧な意味を持ちます。確かに最も簡単な答えは、できるだけ早くそれをマークします。ありがとう! –

関連する問題