ما هي القيمة الإفتراضيه للمتغير الأول في الحلقات؟
أنا تلاعبت بالكود و بدلاً من أن أكتب i+=1
كتبت هذا الكود لكي أرى الناتج.
for (var i=1; i<=5; i+=i) { write(i + "\n"); }
نتيجة الكود:
1 2 4
أليس من المفترض أن تكون القيمة الأولى في الناتج 2 لأن القيمة الأولى للعداد i
هي 1 فيكون 1 + 1
و يصبح 2؟
لكن حقيقه الأمر هو أعطى i
على أنها 0 و أصبح 0 + 1
فأصبحت قيمة i
النهائية زيادة بواحد و ثم فعل هذا مرة أخرى.
أنا فاهم الكود لكن أتساءل أليس المفترض في النتائج أن يصبح كالتالي؟
2 4
ثم جربت إعطاء العداد i
القيمة 0 فأصبحت Infinite Loop و هنا فهمت أنه أعطى 0 كقيمة أولى للعداد i
لكن قمت بالتلاعب بالكود مره أخرى و نفذت عملية ضرب فأصبح الكود كالتالي i = i*i
يعني المفترض الآن أن 0 * 1
يصبح 0 لكنه أعطانا حلقة لا منتهية بواحد و تعجبت من هذا. في الجمع يعطى القيمة الإفتراضيه بصفر و الضرب يعطى واحد.
هل أنا تفكيري سليم أم هناك خطأ لا أعرفه و آسف على الإطالة و نفع الله بكم و جزاكم خيراً.