الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

واجب سؤال 37 recursion

مغلق
بدأه خـالد في 30 أبريل 2003 · 7 رد · 851 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

أتمنى منكم مساعدتي في ايجاد المعادلة الصحيحة لهذا البرنامج 00 والمطلوب فيه :

لعبة Hanoi المعروفة تحتوي على ثلاثة أعمدة ،، في العمود الأول افترضنا اربعة أقراص مرتبة من الأكبر في الأسفل الى الأصغر في الأعلى 00

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

وفي الأخير سيطبع البرنامج ما يلي :

من 1 الى 3 (( ومعناها من العمود الأول الى الثاني ))

من 1 الى 2

من 3 الى 2

من 1 الى 3

من 2 الى 1

من 2 الى 3

من 1 الى 3

بحيث تكون الطريقة المستخدة هي recursion وهي استدعاء الدلة لنفسها 00

أتمنى ممن يمكنه المساعدة أن يشرح لي المعادلة فقط 00 صراحه فحطت فيها لين دخت عجزت احلها :D

#2
import java.io.*;

public class hanoi
{
     public static void main(String[] args) throws IOException
     {
          BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
          int disks;

          System.out.println("Enter number of disks: ");
          disks = Integer.parseInt(stdin.readLine());
          doHanoi(disks, "1", "3", "2");
     }

     public static void doHanoi(int disks, String start, String end, String temp)
     {
          if (disks >= 1)
          {
               doHanoi(disks - 1, start, temp, end);
               System.out.println("Move 1 disk from " + start + " to " + end);
               doHanoi(disks - 1, temp, end, start);
          }
     }
}
#3

أخوي الله يعيطك الف الف عافيه والله اني تفاجأت بالرد بهالسرعة وبهالاتقان 00 صراحه ما توقعت اني القى اجابه :)

اخوي بس ودي اقول لك ترى أنا مستجد يعني يا ليت لو توضح لي ماهي : start و end temp

يعني اذا كانت متغيرات وهو الواضح ،، ليش ما سوينى لها تهيئة يعني ما أعطيناها قيم ؟؟

ترى الى الحين ما أخذناها يعني شكل الاستاذ بيكفشني :D

عموماً أنا والله يهمني افهم قبل احل السؤال 00 وأشكرك أخوي على تعاونك معي

#4

هذه المتغيرات من نوع String وهي معرّفة في function شوف هذا هو التعريف

public static void doHanoi(int disks, String start, String end, String temp)

ونعطيها القيم عندما ننادي الfunction هكذا :

doHanoi(disks, "1", "3", "2");

يعني اول مرة ينفّذ ال fuction يعطي كل متغيّر القيمة المقابلة له

يعني :

start="1"

end="3"

temp="2"

ثم تتغير هذه القيم داخل الfunction

موفق باذن الله..............

#5

كلام الأخت طالبة طالبة علم2 صحيح وأزيد عليه

ان المتغيرات: start و end temp

تعني "في اللعبة"

start=العامود الأول

temp=العامود الأوسط

end=العامود الأخير

وإذا تبي تعرفها قبل تحطها في ال(function call) تقدر........

import java.io.*;

public class Hanoi
{
     public static void main(String[] args) throws IOException
     {
          BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
          int disks;
          String start = "1";
          String temp = "2";
          String end = "3";
          System.out.println("Enter number of disks: ");
          disks = Integer.parseInt(stdin.readLine());
          doHanoi(disks, start, end, temp);
     }

     public static void doHanoi(int disks, String start, String end, String temp)
     {
          if (disks >= 1)
          {
               doHanoi(disks - 1, start, temp, end);
               System.out.println("Move 1 disk from " + start + " to " + end);
               doHanoi(disks - 1, temp, end, start);
          }
     }
}
#6

الله يعطيكم العافية ما قصرتوا بس انا حاولت اعرف السطرين هذي كيف يمشي فيها البرنامج ؟؟

doHanoi(disks - 1, start, temp, end);
               System.out.println("Move 1 disk from " + start + " to " + end);
               doHanoi(disks - 1, temp, end, start);

لأني أصلاًَ سويت البرنامج عندي بنفس الطريقة ماعدا اني عرفت الثلاث متغيرات على انها integer وماشي البرنامج تمام بس المشكلة الي واجهتني هي الثلاثة السطور اللي احطها في الشرط 00 عشان كذا اتمنى افهمها

وشاكر لتعاونك ولسرعة استجابتكم

#7

اخ خالد،، بما انك مستجد على الجافا .. فالكود السابق ما راح يساعدك و راح الدكتور يكتشف ان الكود من واحد دارس الجافا بشكل معمق :)

#8

استاذي صلاح 00 صح اني مستجد بس مش غبي مره يعني :D

أنا غيرت البرنامج كله وأخذت منه بس اللي احتاجه اللي هو الثلاثه سطور اللي داخل if . وحطيتها في برنامجي 00 لكن بيني وبينك المشكله اني ما فهمت الثلاثه سطور هذي وهي اللي عقدتني

اشكرك لحرصك 00 وعموماً الاستاذ مسوي لنا قروب في الياهو ولا يمانع من الاستفادة من المنتديات بس المهم عنده أن نفهم :)

هذا الموضوع مغلق.

مواضيع مشابهة