2016-09-26 11 views
0

逆、逆、または::(リストスライス演算子)のような組み込み関数を使用せずに、リストを逆にする再帰的なメソッドを記述する必要があります。私はこれを再帰的に書きましたか?

私はこれを正しく実行しましたか?

def reverseList(alist): 
    if len(alist) == 1: 
     return alist 
    else: 
     return reverseList(alist[1:]) + [alist[0]] 

print (reverseList([1,2,3,4,5])) 
+2

あなたのインデントを修正してください。また、あなたのコードで現在起こっていることは、期待どおりに動作していませんか? – idjaw

+0

私はリストを元に戻すことができます。私はちょうど再帰を学んでいて、私はループや関数を組み込んでこれを正しく書いたかどうかを知りたがっていました。 – godfather97

+0

空のリストに入れるとコードが壊れます。あなたのコードの変更は、そのケースを処理するためのものではないと思いますか? – idjaw

答えて

0

空リスト[]を除いて、動作するように見えます。ベースケースとして追加する必要があります。たとえば、正しいコードは次のようになります。

def reverseList(alist): 
    if len(alist) <= 1: 
     return alist 
    else: 
     return reverseList(alist[1:]) + [alist[0]] 

print (reverseList([1,2,3,4,5])) 
+0

'if(len(alist)<= 1)' – tony

+2

これは質問への答えを提供しません。十分な[評判](http://stackoverflow.com/help/whats-reputation)があれば、[任意の投稿にコメントする]ことができます(http://stackoverflow.com/help/privileges/comment)。代わりに、[質問者からの明確化を必要としない回答を提供する](http://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- i-do-代わりに)。 - [レビューから](レビュー/低品質の投稿/ 13802519) – andreas

+1

@アンドレアスこれは答えを提供します。いくつかのサンプルコードが必要であることを意味しましたか? – jmunsch

1

はい、素晴らしいコードでした。コードは短く、はっきりしており、読み取り可能であり、それ自体を適切に呼び出す。はい、空のリストに対してこれを再コードすることができます。

if len(alist) <= 1: 
    return alist 

また、さらにいくつかのテストケースを試してください:

print (reverseList([1,2,3,4,5])) 
print (reverseList([1, [False, 2.71828], ["hello", "world", "I'm", "done"], 4, 5])) 
print (reverseList([]) 
print (reverseList([7]) 
関連する問題