2016-04-18 18 views
0

私はPythonで再帰を使用していくつかのコーディネートタスクを解決しようとしています。
誰かがこのコードをチェックして、なぜそれがNoneを返すのか教えてもらえますか?私は[4, 5]を "solution"という変数に入れたいです。なぜPythonの再帰が返されないのですか?値なし

def rec_fun(upstream,downstream): 

    if not upstream or not downstream : 
     if upstream : 

      return upstream 
     if downstream: 
      return downstream 
    if upstream[0] >downstream[0] : 
     downstream.pop(0) 
    else: 
     upstream.pop(0) 

    rec_fun(upstream,downstream) 


def solution(A, B): 

    upstream=[] 
    downstream=[] 
    n=len(A) 
    for i in range(0,n) : 
     if B[i]==0: 
      upstream.append(A[i]) 
     else: 
      downstream.append(A[i]) 
    upstream=sorted(upstream) 
    downstream=sorted(downstream) 


    return rec_fun(upstream,downstream) 


A=[4,3,2,1,5] 
B=[0,1,0,0,0] 

solution = solution(A, B) 
print solution 

出力は次のとおりです。output = None、それは[4, 5]する必要があります。

+0

'リターンrec_fun(上流、下流)' –

答えて

0

再帰関数では、return何も入力していません。 returnステートメントを追加する必要があります。すなわち:

return rec_fun(upstream,downstream) 
+0

私は2つのリターンが上流戻り、ヨーヨーがここに印刷UADD場合..下流 – ivan

+0

を返すがあります。上流の場合: プリント「リターン」 印刷上流 リターン上流、あなたは私が話しているものを見るでしょう。 – ivan

+0

それは今、tnxで動作します – ivan

関連する問題