PDA

View Full Version : سوال: درمورد حل دو تابع و اثبات ان - فوری



achil1
جمعه 14 مهر 1391, 14:28 عصر
سلام

خروجی تابع به ازای n=10

int A(int n)
{
if (n<3) A=n;
else
A= A(n-1) + A(n-3) + A(n-5) -1;
}


.....................................
مقدار تابع به ازای x=2 , y=12

int B(int x , int y);
{
if (y==1) return (x);
if (y) is even
return (B(x,y/2) * B(x,y/2));
else return (x*B(x,y-1));
}

لطف کمک کنید

ممنون

rubiks.kde
جمعه 14 مهر 1391, 14:36 عصر
منظورتون چیه ؟؟ خروجی تابع ها رو می خوایین بدونین به ازای اون ورودی ها چی میشه یا نه ؟؟

achil1
جمعه 14 مهر 1391, 14:39 عصر
اره

می خوام بدونم چه جوری محاسبه میشه
و جواب هر دوتا تابع چی میشه

ممنون

achil1
جمعه 14 مهر 1391, 14:46 عصر
لطفا یکی کمکم کنه

rubiks.kde
جمعه 14 مهر 1391, 14:52 عصر
اولین کدت که اشتباهه چون بازگشتیه هیچ وقت تموم نمیشه(شرط پایان نداره)
در مورد دومی هم اینم کدش اجرا کن خروجی بگیر ازش

int B(int x , int y)
{
if (y==1) return x;
if (y%2 == 0)
return (B(x,y/2) * B(x,y/2));
else return (x*B(x,y-1));
}

مسعود اقدسی فام
جمعه 14 مهر 1391, 14:54 عصر
A(10 ) = A( 9 ) + A(7 ) = A (5 ) -1


همینطوری جای (A(9 و بقیه فرمول اینطوری رو بذار و برو پایین. اگه n < 3 شد مقدار خود n رو بذار. مثلا A( 2 ) = 2 می شه.

همینطور در مورد B همین کار رو انجام بده.

مسعود اقدسی فام
جمعه 14 مهر 1391, 15:11 عصر
مثلا برای A با توجه به اینکه اگه n < 3 باشه A( n ) = n می‌شه، می‌شه اینطور نوشت:



A(3) = A(2) + A(0) + A(-2) - 1 = 2 + 0 - 2 - 1 = -1

A(4) = A(3) + A(1) + A(-1) - 1 = -1 + 1 -1 - 1 = -2

A(5) = A(4) + A(2) + A(0) - 1 = -2 + 2 + 0 - 1 = -1

A(6) = A(5) + A(3) + A(1) - 1 = -1 -1 + 1 = -1


همینطور تا آخر

از ( A( 9 هم شروع می‌کردی و پایین می‌اومدی همین نتیجه به دست می‌اومد.

مسعود اقدسی فام
جمعه 14 مهر 1391, 15:16 عصر
در مورد اثبات، الگوریتم A به وسیله‌ی حل روابط بازگشتی قابل حل هست تا یه فرمول سرراست بیاد. خطیه با 5 مقدار اولیه از منفی دو تا دو. الگوریتم B هم محاسبه x به توان y هستش. مثالی که شما زدید می‌شه دو به توان دوازده.

achil1
جمعه 14 مهر 1391, 15:17 عصر
ببخشید الان جواب کلی دوتا تابع میشه چی ؟؟؟؟

ممنون

مسعود اقدسی فام
جمعه 14 مهر 1391, 15:40 عصر
ببخشید الان جواب کلی دوتا تابع میشه چی ؟؟؟؟

ممنون

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

achil1
جمعه 14 مهر 1391, 16:20 عصر
ببخشید ایا دستور

if (y) is even

معادل این هست؟

if (y%2 == 0)


میشه در مورد دستور اولی توضیح بدید

ممنون

vb8334
جمعه 14 مهر 1391, 16:48 عصر
بله یعنی اگه y باقی مانده اش به 2 برابر 0 شد یعنی زوج است پس دستور پایین اجرا میشه و در غیر اینصورت دستور بعد از else اجرا میشه.

شما با توجه به توضیحاتی که جناب مسعود اقدسی فام (http://barnamenevis.org/member.php?87209-%D9%85%D8%B3%D8%B9%D9%88%D8%AF-%D8%A7%D9%82%D8%AF%D8%B3%DB%8C-%D9%81%D8%A7%D9%85) گفتن برین جلو خیلی راحت جواب رو بدست میارین

یا علی

مسعود اقدسی فام
جمعه 14 مهر 1391, 17:05 عصر
ببخشید ایا دستور

if (y) is even

معادل این هست؟

if (y%2 == 0)


میشه در مورد دستور اولی توضیح بدید

ممنون

دستور اولی یعنی همین چیزی که دوستمون توضیح دادن؟ یا الگوریتم اول؟