سرمایه گذاری متفاوت در سال نو 🍎🌱 ۳۵٪ تخفیف نوروزی ➕ حضور رایگان در مسترمایند نخبگان صنعت نرم‌افزار 💻✅
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ Navid JN
تمرین==> حل مسئله ی فیبوناچی
محمدعلی رضا حل شده توسط محمدعلی رضا

۱. شروع

۲. عدد را از ورودی بگیر و در متغیر number ذخیره کن.

۳.متغیر‌های i,f,j=۰ و m=۱ ایجاد کن.

۴. اگر number بزرگتر از ۰ و کوچکتر یا مساوی ۲ باشد مقدار ۱ را چاپ کن و اگر number  برابر با ۰ باشد مقدار ۰ را چاپ کن و به مرحله ی آخر برو.

۵.اگر عدد بزرگتر از ۲ باشد مقدار f  را حاصل جمع  m و j قرار بده.

۶.مقدار j را برابر با m قرار بده .

۷.مقدار m را برابر با f قرار بده.

۸. مقدار i  را یک واحد افزایش بده.

۹. اگر number بزرگتر از i  باشد به مرحله ۵ برو.

۱۰. مقدار f را چاپ کن.

۱۱. پایان

سلاااااااااااااااااام نوید جان

آفرین. خوبه. کلیتش درسته.

الگوریتم ات رو Trace کردم. تبدیلش هم کردم به کد. (اگر خواستی بگو کدش رو بذارم.)

مرحله 9 الگوریتم نیاز به اصلاح داره.

روش فکر کن و اصلاحش کن. اگر به number مقدار بدی و الگوریتم رو Trace کنی اشتباهش رو پیدا میکنی. مثلا بهش مقدار 5 یا 6 رو بده و خط به خط ببین چه اتفاقی میوفته.

محمدعلی رضا ۱۹ مهر ۱۴۰۰، ۱۹:۳۱

جواب کامنت:

سلام ممنوم میشم کد رو هم بزارید وقتی عدد دادم و خط به خط جلو اومدم خروجی درست نمیشه چون حلقه یه بار دیگه میچرخه و عدد خروجی تغییر میکنه اما چطوری میشه حلش کرد فعلا به نتیجه ای نرسیدم

سلااااااااااااااااام

حتما. اگر الگوریتمی که نوشتی رو تبدیل به کد کنیم. فک میکنم همچین کدی میشه:

# Navid Algorithm
number = int(input("Enter number:"))
i = f = j = 0
m = 1
if 0 < number <= 2:
    print(1)
elif number == 0:
    print(0)
if number > 2:
    while number > i:
        f = m + j
        j = m
        m = f
        i += 1
    print(f)

مساله الگوریتم ات رو درست تشخیص دادی. حقله ای که تو الگوریتم تعریف کردی یه بار بیشتر از چیزی که لازمه میچرخه (کار میکنه).

همین که مساله رو درست فهمیدی میرسونتت به جواب. فقط لازمه یه خورده بیشتر در موردش فک کنی.

بهترین پاسخ
محمدعلی رضا ۲۰ مهر ۱۴۰۰، ۰۸:۲۹