2017-09-14 12 views
0

再帰Pyプログラム返すj == 1のときはj = None?指定された基底がj = 1でなければならず、関数を再度呼び出さないため、これは意味をなさない。j == 1の場合、j = noneを返す再帰的Pyプログラム?

import sys 
y=10 
def decrease(j): 
    if j==1: 
     print('j =' + str(j) + '(1)') 
     print('returning j') 
     return j 
    else: 
     print('j =' + str(j) + '(not 1)') 
     print('decreasing j') 
     j = j-1 
     print('calling decrease j') 
     decrease(j) 
y=decrease(y) 
print('complete') 
print(y) 
+0

'else'節は何も返さないので、' None'が得られます。おそらく、あなたは '戻りの減少(j)を意味した' – AChampion

+0

ありがとう@AChampionこれは働いた! –

答えて

1

2番目の分岐の最後にreturn decrease(j)を忘れています。

通常、関数から返された予期せぬNoneが発生した場合は、すべてのブランチがreturnステートメントで終了することを最初に確認してください。それがなければ、関数はNoneを返します。

+0

ありがとうございました!これはうまくいった。 –

+0

@Nichols、それでは、それを受け入れられたものとしてマークしてみませんか? –

関連する問題