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

Recursion

بدأه رحيق الورد في 6 نوفمبر 2010 · 4 رد · 602 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

عندي استفسار عن Recursion

في مثال مشهور عنTower of Hanoi

مو فاهمته

ارجوووو المساعده

ولكم جزيل الشكر

#2

فين المثال دا ؟؟؟

ممكن تضعيه

وتذكرى ما لم تفهميه ؟؟؟

ويمكنك الاطلاع على مفهوم الـ Recursion

من هنا

/index.php?showtopic=185705

هو الشرح فيه اكواد سى بلس بلس ولكنها لاتختلف فى عن الجافا كثيرا

والغرض من وضع لينك الموضوع هو فهم ما هو الـ Recursion

بالتوفيق :)

Software Developer
Mahmoudkelany.com


 

#3

هيوه الكود هاد الكود من كتاب introduction to java

انا مو عارفه اتبع الكود بالنسبه للمثود اللي فيه recurtion والله دماغي تلخبط

هوه المثال عن 3 towers واحد بكون في الاقراص موضوعه من الكبير للصغير بدي انقلها للتور التاني بنفس الترتيب اي من الصغير للكبير من خلال تور تالت بكون وسيط والشرط نقل قطعه قطعه اي ما بصير انقل قطعتين بنفس الوقت وكمان ما بجوز اضع قطعه كبيره فوق صغيره انا مو فاهمه الجزء عن عمليه اعاده الاستدعاء للمثود ليش غير مواضع parameters




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 == 1) // Stopping condition
System.out.println("Move disk " + n + " from " +
fromTower + " to " + toTower);
else {
moveDisks(n - 1, fromTower, auxTower, toTower);
System.out.println("Move disk " + n + " from " +
fromTower + " to " + toTower);
moveDisks(n - 1, auxTower, toTower, fromTower);
}
}
}


 import javax.swing.JOptionPane;

#4

بكل بساطه فى هذا المثال

انه عنده داله بينادى عليها ف كل مره

بس فى كل مره بينقص الـ 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);
    	}
	}
}

بالتوفيق :)

Software Developer
Mahmoudkelany.com


 

#5
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);
    	}
	}
}

بالتوفيق :)

بارك الله فيك اخي ونفع بك وسدد خطاك

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