2011-09-10 14 views
1

私のプログラムはどのようにして関数呼び出しを終了できますか?私は、条件が満たされたときにそれ自身を呼び出す再帰関数を持っています。Python関数呼び出しを終了する

def function(arg): 
    if (condition): 
     ... 
     return function(arg + 1) 

私はそれがどのように動作するか推測します。条件が満たされない場合、関数呼び出しは終了します。私のプログラムでは、そうではないようです - 条件は違反されますが、プログラムはreturn文(おそらく唯一のreturn文です)にジャンプします。

else節に入れることができるexit()がありますか?

+3

擬似コードの代わりにスクリプト全体を投稿できますか?完全な関数や関連するコードがないと、再帰呼び出しで何がうまくいかないのかを知ることは難しいです。 – chown

答えて

3

上記のように、コードは常にNoneを返します。これはすべての再帰を経て、条件が満たされなくなるまでこれを行い、関数の終わりを取り除き、Noneを返します。

def f(x): 
    if (x<10): 
     return f(x+1) 
return x 

を、有用な何かをするために、このから構築:

たとえば、これを試してみてください。

0

Python関数が明示的にreturnの値を持たない場合は、Noneを返します。暗黙のreturn Noneは、C言語のようなreturnに類似しています。

+1

これは本当に質問とは関係ありません。 – chown

+1

@chownはいそれは –

+1

彼は現在のコードが期待どおりの機能を終了しないので、*どのように*関数呼び出しを終了するかを尋ねています。戻り値は実際には問題を解決する役割を果たしません。 – chown

0

"function terminating"は結果としてNoneを返します。あなたが何か違うものを見ているなら、間違ってインデントされているかもしれないので、それはあなたが見るreturnに非常によく当てられます。 python -tt myscript.pyを使用して、タブとスペースが混在していないことを確認します。

+0

私は彼がそこにくぼみを入れることを意味していると思う - 「条件が満たされたときに自分自身を呼び出すという再帰的な機能を持っています。 –

+0

@Tom:確かですが、タブとスペースを混在させた場合、視覚的に正しく表示されますが、正しく解釈されません。 –

+0

なぜあなたはそれが誤ってインデントされていると言いましたか? –

関連する問題