====== سوال ۶ ====== پس از پیاده‌سازی الگوریتم ‎BFS‎ و پیداکردن مقدار فاصله کوتاه‌ترین مسیر از رأس صفر به تمام رأس‌ها، می‌خواهیم خودِ مسیر را نیز چاپ کنیم. برای این منظور از شما خواسته شده که تابع ''void PrintPathTo(int v)''‎ را یک‌بار به‌صورت بازگشتی و یک‌بار به‌صورت غیربازگشتی بنویسید. این تابع قرارست با استفاده از محتوای آرایه‌ی int parent[MAX_N[ (که در آن پدر هر رأس نگه‌داری می‌شود) کوتاه‌ترین مسیر از رأس شروع (که همواره رأس صفر است) تا رأس ‎''v''‎ را چاپ کند. برای مثال اگر محتوای آرایه‌ی ‎''parent''‎ برای اعضای صفر تا ‎''5''‎ به‌ترتیب (از چپ به راست) ‎''0‎, ‎3‎, ‎0‎, ‎0‎, ‎1‎, ‎9''‎ باشد، آن‌گاه با فراخوانی تابع به‌صورت ‎''PrintPathTo(4)''‎ می‌بایست در خروجی ‎(''cout'')‎ نوشته شود ‎''0 3 1 4''. - تابع ''void PrintPathTo(int v)''‎ را به‌صورت بازگشتی بنویسید.‎ شما مجاز نیستید در این تابع متغیر جدید تعریف کنید یا از ‎''{''‎ اضافه استفاده کنید. در بدنه‌ی تابع شما باید حداکثر دو '';''‎ یا ‎'',''‎ استفاده شده باشد. - تابع ‎''void PrintPathTo(int v)''‎ را به‌صورت غیربازگشتی بنویسید. فرض کنید برای این‌کار به‌ شما یک ''vector vec;''‎ که به‌صورت ‎global‎ تعریف شده، داده شده است. شما به‌هیچ‌وجه مجاز نیستید در این تابع متغیر دیگری تعریف کنید. - یک مورد از مزایای تابع بازگشتی برای حل این مسئله و یک مورد از مزایای تابع غیربازگشتی برای حل این مسئله را ذکر کنید. * [[سوال ۷|سوال بعد]] * [[سوال ۵|سوال قبل]]