PDA

View Full Version : جواب این تست چرا میشه 977؟



sajad_3dmax
دوشنبه 01 آذر 1389, 23:28 عصر
:متفکر: این تست ارشد IT-88 دولتی بوده.لطفا کمک کنید.سوال رو به این صورت مطرح میکنم که:
یک لیست پیوندی یک طرفه (خطی)حلقوی داریم با 1000 عنصر و با مقادیر داده ای 1و2و...و1000 که L اشاره گری است به ابتدای لیست.خروجی کد زیر چیست؟
الف )1 ب)327 ج)977 د)1000
Int s(List *L)
{
If(L^.next==L)return L^.data;
L^.next=L^.next^.next;
Return s(L^.next);
}

چرا جواب برابر 977 است؟

xxxxx_xxxxx
سه شنبه 02 آذر 1389, 01:59 صبح
احتمالاً این تابع به صورت بازگشتی نیست؟! خط آخر Return s(L^.next) نیست؟

qwerty11
سه شنبه 02 آذر 1389, 07:10 صبح
به این دلیل :

http://fa.wikipedia.org/wiki/%D9%85%...81%D9%88%D8%B3 (http://fa.wikipedia.org/wiki/%D9%85%D8%B3%D8%A7%D9%84%D9%87_%DA%98%D9%88%D8%B2% D9%81%D9%88%D8%B3)

http://en.wikipedia.org/wiki/Josephus_problem

taranom20
سه شنبه 02 آذر 1389, 07:16 صبح
همه ی این ها درست
ولی تستی که نوشتید مشکل داره. یه دستور while کم داره.

sajad_3dmax
سه شنبه 02 آذر 1389, 10:58 صبح
احتمالاً این تابع به صورت بازگشتی نیست؟! خط آخر Return s(L^.next) نیست؟
فرمایش شما درسته.اصلاحش کردم.ممنون