入力リストを指定すると、リスト内のすべての隣接要素が互いに入れ替えられます。リストの長さが奇数の場合、最後の要素はそのまま残ります。私はそうのように、反復的に機能を書いた:繰り返しと再帰的な方法でリストのペアを入れ替えます-Python3
>>>def swap(nums):
for i in range(0,len(nums),2):
try:
nums[i],nums[i+1] = nums[i+1], nums[i]
except:
pass
return nums
>>>swap([1,2,3,4,5])
[2, 1, 4, 3, 5]
私は再帰バージョンのため、以前とまったく同じロジックを使用:仕事の両方が、
def swap(nums, c=0):
try:
nums[c], nums[c+1] = nums[c+1], nums[c]
return swap(nums, c+2)
except:
return nums
、私は少し浮気てるように私は感じますこれらのブロックはtry/except
であり、私はいつもより良いプログラマーになれません。誰も私にどのようにtry/except
ブロックに頼ることなくこれらの問題にアプローチするための提案を与えることができますか?反復バージョンについては
あなたの第二の機能は本当に再帰の背後にある考え方を活用されていません。再帰は、問題を単純化する際に* 1ステップ*を要し、単純化された問題を自身に渡す(次の再帰ステップ)。再帰関数の基本構造は常に次のとおりです。1.停止条件。再帰ステップ。あなたの問題の再考の方法は、長さが<2(停止条件)であるかどうかをチェックし、それ以外の場合は最初の2つの要素を交換し、nums [2:]再帰の結果を追加します。 – agtoever