2011-11-15 15 views
-3

私は以前の問題を解決しましたが、今ではこの問題に悩まされています。 以下に投稿した以前の解決策の改善を求めていますが、問題の内容を理解できません。 (また、それを解決する方法を実際に把握することはできません) 助けてください ありがとう。ニュートンのメソッド再帰を改善する

問題: エレナは、プロジェクト2の再帰的なニュートン関数には、推定のための余分な引数が が含まれていると不平を言っています。この関数を呼び出すときに、関数のユーザーは にこの値を指定する必要はありません。これは常に同じです。 キーワードパラメータ をこの引数に適切なデフォルト値で使用するように関数の定義を変更し、この問題を解決することを示すために第2引数なしで関数 を呼び出します。

def newtonSquare(x, estimate): 
    if abs(x-estimate ** 2) <= 0.000001: 
     return estimate 
    else: 
     return newtonSquare(x, (estimate + x/estimate)/2) 

def main(): 
    num = int(raw_input('Enter a positive number >> ')) 
    print newtonSquare(num, 1.0) 

main() 
+1

[広く利用できるドキュメントの不十分な読解](http://docs.python.org/tutorial/controlflow.html#default-argument-values)... –

+0

の投票には投票するオプションがありません。この宿題ですか? – Stedy

+0

Stedy >>そうではありません。私は楽しんでやっています。 – user1047092

答えて

2

問題は誰かがnewtonSquareを呼び出したときに、彼らは常に1.0の初期推定値とに行うことを訴えている:

は、ここに私のコードです。あなたが明示的にそれを提供しない限り、デフォルト値として設定するには、あなただけに、関数の定義を変更する必要があります。

def newtonSquare(x, estimate = 1.0): 
+0

>> Michael Foukarakisさん、お世話になりました。私はあまりにも多くのことを考えていたと思う。 – user1047092

0

マイケルのデフォルト値のソリューションの代替をする地元の再帰関数を定義していますnewtonSquare機能:

def newtonSquare(x): 

    def f(x, estimate): 
     if abs(x-estimate ** 2) <= 0.000001: 
      return estimate 
     else: 
      return f(x, (estimate + x/estimate)/2) 

    return f(x, 1.0) 

def main(): 
    num = int(raw_input('Enter a positive number >> ')) 
    print newtonSquare(num) 

main() 

デフォルト値を有する。この場合は、しかしよりよい、より柔軟であるが、これは依然として有用パターンとすることができます。

関連する問題