الگوریتم زیر را در نظر بگیرید. در این الگوریتم n یک عدد طبیعی و A یک آرایه است که عنصر iام آن را با A[i] نشان میدهیم.
کدام یک از گزارههای زیر در مورد مقدار آرایهی A پس از اجرای این الگوریتم٬ درست است؟
پاسخ
گزینه (۲) درست است.
به ازای j=1,2,...,16 خواهیم داشت:
A(1)=0A(2)=1A(3)=3A(4)=2A(5)=6A(6)=7A(7)=5A(8)=4A(9)=12A(10)=13A(11)=15A(12)=14A(13)=10A(14)=11A(15)=9A(16)=8
غلط بودن گزینههای ۴٬۱ و ۵ واضح است. برای به دست آوردن A(2n+1) تا A(2n+1) باید مقادیر A(2n) تا A(1) را (نه به ترتیب) با مقدار ثابت 2n جمع کرد. پس اگر A(2n) تا A(1) عضو تکراری نداشته باشد به استقرا معلوم میشود که A(2n+1) تا A(2n+1) نیز عضو تکراری نخواهد داشت٬ ضمن اینکه به عنوان مثال از A(1) تا A(8) عضو تکراری وجود ندارد(پایهی استقرا). پس گزینهی ۳ نیز غلط میباشد.
و اما گزینهی ۲ صحیح است. استدلال٬ مشابه استدلال فوق است چون هر دو عدد متوالی از A(1) تا A(8) در مبنای ۲ دقیقا در یک رقم متفاوت هستند پس اگر آنان را با 23 (در مبنای ۲ به صورت ۱۰۰۰) جمع کنیم فقط رقم آخر از سمت چپ آنان از صفر به ۱ تغییر خواهند یافت…