نحوه گرفتن و بررسی تمام زیر پوشه های یک پوشه

سلام میخوام یک برنامه بسازم که لیست تمام زیر پوشه های و لیست تمام زیر پوشه زیر پوشه ها و... تا ته به دست بیارم و در یک آرایه ذخیره کنم اما دقیقا نمیدونم چطور کسی الگوریتمی سراغ نداره؟(اگه شد به زبان های دات نت)

ممنون میشم اگه جواب بدید

پاسخ ها

sokanacademy forum
کاربر سکان آکادمی 6 سال پیش

برای حل چنین مسائلی باید از الگوریتم ریکرسیو (Recursive ) استفاده کنی. یکی از کاربردهای این الگوریتم جست و جو در ساختارهای درختی است. یعنی دقیقا همون چیزی که شما دنبالش هستید. در این نوع الگوریتم یک فانکشن تا زمانی که به نتیجه مورد نظر نرسیده خودش، خودش رو call میکنه. جهت آشنایی در موردش گوگل کنید. یه کتاب ریاضیات گسسته هم هست نوشته Knneth H.Rosen که در مورد این نوع الگوریتم شرح داده. 

موفق باشید. 

sokanacademy forum
کاربر سکان آکادمی 6 سال پیش

ممنونم

کجا میتونم پیداش کنم ؟

sokanacademy forum
کاربر سکان آکادمی 6 سال پیش

اگه منظورت کتاب هستش، اسم دقیقش هست Discrete Mathematics and Its Applications انتشارات McGraw-Hill هست. ممکنه بتونی از طریق آمازون یا سایر فروشگاه‌های آنلاین بخریش ولی بازهم توصیه می‌کنم Google کنی. فکر می‌کنم بتونی مطالب به درد بخوری پیدا کنی، خصوصا که مساله مورد نظر شما مورد پیچیده‌ای نیست.

sokanacademy forum
کاربر سکان آکادمی 6 سال پیش

ممنونم

sokanacademy forum
کاربر سکان آکادمی 6 سال پیش

خواهش‌میکنم، واسه اینکه کارت راه بیفته و یه چلنجی هم باشه واسه خودم یه تیکه سودوکد برات نوشتم که فکر می‌کنم کارت رو راه بندازه. این کد بر اساس الگوریتم ریکرسیو هست. همونطور که قبلا هم گفتم، توی الگوریتم ریکرسیو یه فانکشن اونقدر خودش، خودش رو کال میکنه تا همه حالت‌های ممکن پوشش داده بشه و به جواب نهایی برسه.

توی این کد من فرض کردم که یه فانکشن دارم به اسم listItems که مسیر یک دیرکتوری رو بهش میدی و اون فانکشن نام فایل‌های داخل دیرکتوری و همچنین نام تمام فایل‌هایی که در ساب دیرکتوری‌های اون دیرکتوری هستند رو در یک لیست ذخیره میکنه.

func listItems(directory) {
	for each item in directory {
		if item is file {
			add its name to the list
		} else {
			listItems(item)
		}
	}
}

ضمنا این رو هم بگم که این تیپ کارهارو با حلقه‌های معمولی هم میشه نوشت ولی بسیار سخت، پیچیده و حجیم میشه به طوری که اصلا قابل قیاس با چند خط کد بالا نیست پس اصلا بهشون فکر نکنید و سعی کنید این چهار خط رو خوب درک کنید.

online-support-icon