۰
subtitle
ارسال: #۱
  
محاسبه اعداد
مجموع اعداد فرد بین ۱ تا n؟
مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمیباشید. جهت مشاهده پیوندها ثبت نام کنید.
مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمیباشید. جهت مشاهده پیوندها ثبت نام کنید.
۰
ارسال: #۲
  
RE: محاسبه اعداد
سلام. این تابع میاد به صورت بازگشتی مجموع اعداد فرد از ۱ تا n رو حساب میکنه اما مهم نیست n زوج باشه یا فرد، در هر صورت پاسخ درستی میده.
مقداری که در صورت زوج بودن عدد n برمیگردونه: [tex]return\: (n+oddsum(n-2))[/tex]
اگه [tex]n\: \mod\: 2\: ==0[/tex] در این صورت زوج خواهد بود. پس عدد قبلی ش فرد هست دیگه. اگه زوج باشه یکی ازش کم میکنه میشه عدد قبلیش. اون رو برمیگردونه به علاوه ی اعداد فردی که قبل از عدد زوج قبلیش هستن. یعنی میاد همین تابع رو برای عدد زوج قبلیش اجرا میکنه. جوابش رو با عدد فرد قبل از خودش جمع میکنه و این روال ادامه داره تا جایی که به ۱ برسیم. یعنی مثلا اعداد زیر رو در نظر بگیرید. میخوایم جمع اعداد فرد رو حساب کنیم.
۱ ، ۲، ۳، ۴، ۵، ۶، ۷، ۸
n=8 . دفعه ی اول [tex]oddsum(۸)[/tex] صدا زده میشه. چون زوج هست، یکی ازش کم میشه یعنی n میشه ۷. حالا مقدار بازگشتی [tex]oddsum(7+oddsum(6))[/tex] خواهد بود. حالا ۷ رو جمع کرده و برای عدد زوج قبلیش صدا میزنه تابع رو. یعنی واسه [tex]oddsum(۶)[/tex]
[tex]oddsum(۵+oddsum(۴))[/tex] صدا زده میشه. تا برسیم به ۱. تعداد صدا زدن تابع برابر میشه با مرتبه ی زمانی تابع که برابر هست با n/2
با فرض فرد بودن n, دستور else انجام میشه و خواهیم داشت: [tex]return\: (n+oddsum(n-2))[/tex] مثلا توی اینجا:
۱،۲،۳،۴،۵،۶،۷
مقدار بازگشتی برابر میشه با [tex]return\: (۷+oddsum(۵))[/tex] که [tex]oddsum(۵)[/tex] صدا زده میشه و برابر میشه با [tex]۵+oddsum(3)[/tex] تا برسیم به ۱. مرتبه ش میشه n/2
مقداری که در صورت زوج بودن عدد n برمیگردونه: [tex]return\: (n+oddsum(n-2))[/tex]
اگه [tex]n\: \mod\: 2\: ==0[/tex] در این صورت زوج خواهد بود. پس عدد قبلی ش فرد هست دیگه. اگه زوج باشه یکی ازش کم میکنه میشه عدد قبلیش. اون رو برمیگردونه به علاوه ی اعداد فردی که قبل از عدد زوج قبلیش هستن. یعنی میاد همین تابع رو برای عدد زوج قبلیش اجرا میکنه. جوابش رو با عدد فرد قبل از خودش جمع میکنه و این روال ادامه داره تا جایی که به ۱ برسیم. یعنی مثلا اعداد زیر رو در نظر بگیرید. میخوایم جمع اعداد فرد رو حساب کنیم.
۱ ، ۲، ۳، ۴، ۵، ۶، ۷، ۸
n=8 . دفعه ی اول [tex]oddsum(۸)[/tex] صدا زده میشه. چون زوج هست، یکی ازش کم میشه یعنی n میشه ۷. حالا مقدار بازگشتی [tex]oddsum(7+oddsum(6))[/tex] خواهد بود. حالا ۷ رو جمع کرده و برای عدد زوج قبلیش صدا میزنه تابع رو. یعنی واسه [tex]oddsum(۶)[/tex]
[tex]oddsum(۵+oddsum(۴))[/tex] صدا زده میشه. تا برسیم به ۱. تعداد صدا زدن تابع برابر میشه با مرتبه ی زمانی تابع که برابر هست با n/2
با فرض فرد بودن n, دستور else انجام میشه و خواهیم داشت: [tex]return\: (n+oddsum(n-2))[/tex] مثلا توی اینجا:
۱،۲،۳،۴،۵،۶،۷
مقدار بازگشتی برابر میشه با [tex]return\: (۷+oddsum(۵))[/tex] که [tex]oddsum(۵)[/tex] صدا زده میشه و برابر میشه با [tex]۵+oddsum(3)[/tex] تا برسیم به ۱. مرتبه ش میشه n/2
Can I see some ID?
Feeling left out?
نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. رمزت رو فراموش کردی؟ اینجا به یادت میاریم! close