السلام عليكم
عندي استفسار عن Recursion
في مثال مشهور عنTower of Hanoi
مو فاهمته
ارجوووو المساعده
ولكم جزيل الشكر
السلام عليكم
عندي استفسار عن Recursion
في مثال مشهور عنTower of Hanoi
مو فاهمته
ارجوووو المساعده
ولكم جزيل الشكر
فين المثال دا ؟؟؟
ممكن تضعيه
وتذكرى ما لم تفهميه ؟؟؟
ويمكنك الاطلاع على مفهوم الـ Recursion
من هنا
هو الشرح فيه اكواد سى بلس بلس ولكنها لاتختلف فى عن الجافا كثيرا
والغرض من وضع لينك الموضوع هو فهم ما هو الـ Recursion
بالتوفيق :)
هيوه الكود هاد الكود من كتاب introduction to java
انا مو عارفه اتبع الكود بالنسبه للمثود اللي فيه recurtion والله دماغي تلخبط
هوه المثال عن 3 towers واحد بكون في الاقراص موضوعه من الكبير للصغير بدي انقلها للتور التاني بنفس الترتيب اي من الصغير للكبير من خلال تور تالت بكون وسيط والشرط نقل قطعه قطعه اي ما بصير انقل قطعتين بنفس الوقت وكمان ما بجوز اضع قطعه كبيره فوق صغيره انا مو فاهمه الجزء عن عمليه اعاده الاستدعاء للمثود ليش غير مواضع parameters
import javax.swing.JOptionPane;
بكل بساطه فى هذا المثال
انه عنده داله بينادى عليها ف كل مره
بس فى كل مره بينقص الـ n بواحد
ويجعل الداله تنادى نفسها مره اخرى
حتى ان تكون قيمه الـ n اقل من 1
ممكن تكتبى المثال بطريقه اخرى هكذا
/**
*
* @author Mahmoud Kelany
*/
import javax.swing.JOptionPane;
public class TowersOfHanoi {
/** Main method */
public static void main(String[] args) {
// Read number of disks, n
String intString = JOptionPane.showInputDialog("Enter number of disks:");
// Convert string into integer
int n = Integer.parseInt(intString);
// Find the solution recursively
System.out.println("The moves are:");
moveDisks(n, 'A', 'B', 'C');
}
/**
* The method for finding the solution to move n disks
* from fromTower to toTower with auxTower
*/
public static void moveDisks(int n, char fromTower, char toTower, char auxTower) {
if (n != 0) {
moveDisks(n - 1, fromTower, auxTower, toTower);
System.out.println("Move disk " + n + " from " + fromTower + " to " + toTower);
moveDisks(n - 1, auxTower, toTower, fromTower);
}
}
}بالتوفيق :)
Mahmoud Kelany كتب:بكل بساطه فى هذا المثال
انه عنده داله بينادى عليها ف كل مره
بس فى كل مره بينقص الـ n بواحد
ويجعل الداله تنادى نفسها مره اخرى
حتى ان تكون قيمه الـ n اقل من 1
ممكن تكتبى المثال بطريقه اخرى هكذا
/** * * @author Mahmoud Kelany */ import javax.swing.JOptionPane; public class TowersOfHanoi { /** Main method */ public static void main(String[] args) { // Read number of disks, n String intString = JOptionPane.showInputDialog("Enter number of disks:"); // Convert string into integer int n = Integer.parseInt(intString); // Find the solution recursively System.out.println("The moves are:"); moveDisks(n, 'A', 'B', 'C'); } /** * The method for finding the solution to move n disks * from fromTower to toTower with auxTower */ public static void moveDisks(int n, char fromTower, char toTower, char auxTower) { if (n != 0) { moveDisks(n - 1, fromTower, auxTower, toTower); System.out.println("Move disk " + n + " from " + fromTower + " to " + toTower); moveDisks(n - 1, auxTower, toTower, fromTower); } } }بالتوفيق :)
بارك الله فيك اخي ونفع بك وسدد خطاك