كود الزائف من الطريقة العودية لطباعة جميع التباديل من الأعداد الصحيحة $ N $

cs.stackexchange https://cs.stackexchange.com/questions/119432

سؤال

أنا حقا لا أفهم رمز الزائفة هذا.تقوم الوظيفة بطباعة جميع التباديل من $ n $ أعداد صحيحة معدنية، على افتراض أن جميع الأرقام مختلفة.

هل هناك طريقة لشرح هذا الرمز بسهولة أكبر لأنني حقا لا أحصل على الغرض من المبادلة.

giveacodicetagpre.

هل كانت مفيدة؟

المحلول

ينتج الإجراء الخاص بك جميع التباديلات للمدخلات، وإرجاعها إلى حالتها الأصلية في النهاية.

عندما يكون الإدخال طول 1، لا يوجد شيء للقيام به.

خلاف ذلك، افترض أن الإدخال هو $ a_1، \ Ldots، a_n $ . اسمحوا لنا تمثيل جميع التباديل من $ a_1، \ Ldots، a_n $ ك $ [a_1، \ ldots، a_n] $ < / span>.

هنا هو ما يفعله الإجراء:

  • الإخراج $ a_1، [a_2، a_3، \ ldots، a_ {n-1}، a_n] $ .
  • الإخراج $ a_2، [a_1، a_3، \ ldots، a_ {n-1}، a_n] $ .
  • الإخراج $ a_3، [a_2، a_1، \ ldots، a_ {n-1}، a_n] $ .
  • ...
  • إخراج $ a_n، [a_2، a_3، \ ldots، a_ {n-1}، a_1] $ .

في الخطوة الأولى، فإن الإجراء يذهب فقط جميع التباديل ذيل القائمة، يتكون من كل العنصر الأول ولكن

في الخطوة الثانية، يتم تحويله $ a_1 $ $ a_2 $ ، يذهب على جميع التباديل من الذيل، ثم يتحول $ a_1 $ $ a_2 $ العودة.

في الخطوة الثالثة، تقوم بتغييرات $ a_1 $ و $ a_3 $ ، يذهب فوق جميع التباديل من الذيل، ثم مفاتيح $ a_1 $ $ a_3 $ العودة.

وهلم جرا، حتى في $ n $ th tree، يتم تحويله $ a_1 $ و $ A_N $ ، يذهب فوق جميع التباديلات الذيل، ثم يتحول $ A_1 $ و $ a_n $ مرة أخرى.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى cs.stackexchange
scroll top