PDA

View Full Version : سوال: یک سوال کوچک (فیبو)



alirezabe
چهارشنبه 27 آبان 1388, 19:06 عصر
سلام
من یک تابع فیبوناچی به صورت بازگشتی نوشتم
حالا می خواهم تعداد فراخوانی تابع را برای هر عدد نشان دهد مثلا برای 5 تابع 15 بار فراخوانی می شود
ولی در برنامه من عدد نامربوط منفی نشان می دهد
می خواستم بدانم مشکل کجاست و اگر راه حلی به جز متغیر گلوبال دارید بگویید
البته در حد ترم اول
با تشکر
علیرضا

#include <iostream>
using namespace std;
int fibo(int n , long &counter)
{
counter++;
if (n==0 || n==1)
return n;
else
return fibo(n-1,counter)+fibo(n-2,counter);
}
int main()
{
int num,a;
long count;
cout << "please enter your fibonachi number: ";
cin >> num;
a=fibo (num,count);
cout<< "fibo" <<"(" <<num << ")" << " is: "<< a<< endl;
cout << count<<endl;
return 0;
}

khafan_bat
چهارشنبه 27 آبان 1388, 20:09 عصر
سلام . من این برنامه ی نوشته شده ی تو رو رو کامپایلر تست نکردم ولی همون اولش که اشتباه هست مهندس ! تو long count رو در main تعریف کردی و بدون اینکه بهش مقداری بدی فرستادیش به تابع fibo و اونجا هم هی ++ کردیش !

یه سوال دیگه این کامپیوتر بدبخت برای محسابه ی جمله ی n ام نیاز به دونستن جمله ی اول و دوم داره که به ترتیب 1 , 2 هستند ولی من چیزیی ندیدم در برنامه ی تو . من یه نمونه از الگوریتم رو البته به روش غیر بازگشتی اینجا گذاشتم .تحت کامپایلر turbo C++ Dos

http://barnamenevis.org/forum/showthread.php?t=150444&page=6 (http://http://barnamenevis.org/forum/showthread.php?t=150444&page=6)

khafan_bat
چهارشنبه 27 آبان 1388, 20:17 عصر
خوب بیا برات گذاشتم. محاسبه ی جمله ی n ام دنباله ی فیبوناچی به روش بازگشتی به زبان سی پلاس پلاس تحت کامپایلر توربو سی پلاس پلاس داس !

راستی یه سر به بلاگ من بزن خوشحال میشم : روباتیک و فن آوری های مرتبط: www.innovation.iranblog.com (http://www.innovation.iranblog.com)

alirezabe
چهارشنبه 27 آبان 1388, 20:27 عصر
آقا دستت درد نکنه مشکل همان مقدار نداشتن count بود
در ضمن تو if جمله صفر و یک تعریف شده

m.soleimani
چهارشنبه 27 آبان 1388, 21:04 عصر
خوب بیا برات گذاشتم. محاسبه ی جمله ی n ام دنباله ی فیبوناچی به روش بازگشتی به زبان سی پلاس پلاس تحت کامپایلر توربو سی پلاس پلاس داس !

راستی یه سر به بلاگ من بزن خوشحال میشم : روباتیک و فن آوری های مرتبط: www.innovation.iranblog.com (http://www.innovation.iranblog.com)
دوست عزیز حداقل اجازه می‌دادی که خودش بتونه از نظر syntax برنامش را درست کنه بعد شما درباره الگوریتم بهش کمک می‌کردی با این روش هیچ موقع بهش اجازه پیش‌رفت داده نمی‌شه حتی اگر این اجازه دست کسی به غیر از خودش نباشه ولی اینم مثل جریان برق می‌مونه همیشه نزدیک‌ترین راه را خواهد رفت حتی اگر منطقی نباشه یکم به فکر اون مهندسی که بهش گفتی باش, مهندس فردا سر کارش با یه مشکل برخورد می‌کنه شما هم احیانن یا نیستی یا با اون جور برنامه نویسی به شکل مورد نیاز بازارکار « منظور مخالف پروِژه‌های دانش‌گاه » آشنایی نداری و یا هر چیز دیگه حالا چه اتفاقی خواهد افتاد مهندس از کارش اخراج خواهد شد یا به شدت از سرعت پیش‌رفتش کاسته می‌شه چون به جای این‌که بهش یاد داده باشی که اگر قصد داشته یه متغیر را خارجی تعریف کنه نباید به صورت پارامترهای تابع main تعریفش کنه بهش کد مورد نیازش را هدیه دادی امیدوارم که به کسی بر نخوره فقط قصد کمک کردن داشتم موفق باشید.

alirezabe
چهارشنبه 27 آبان 1388, 21:29 عصر
دوست عزیز حداقل اجازه می‌دادی که خودش بتونه از نظر syntax برنامش را درست کنه بعد شما درباره الگوریتم بهش کمک می‌کردی با این روش هیچ موقع بهش اجازه پیش‌رفت داده نمی‌شه حتی اگر این اجازه دست کسی به غیر از خودش نباشه ولی اینم مثل جریان برق می‌مونه همیشه نزدیک‌ترین راه را خواهد رفت حتی اگر منطقی نباشه یکم به فکر اون مهندسی که بهش گفتی باش, مهندس فردا سر کارش با یه مشکل برخورد می‌کنه شما هم احیانن یا نیستی یا با اون جور برنامه نویسی به شکل مورد نیاز بازارکار « منظور مخالف پروِژه‌های دانش‌گاه » آشنایی نداری و یا هر چیز دیگه حالا چه اتفاقی خواهد افتاد مهندس از کارش اخراج خواهد شد یا به شدت از سرعت پیش‌رفتش کاسته می‌شه چون به جای این‌که بهش یاد داده باشی که اگر قصد داشته یه متغیر را خارجی تعریف کنه نباید به صورت پارامترهای تابع main تعریفش کنه بهش کد مورد نیازش را هدیه دادی امیدوارم که به کسی بر نخوره فقط قصد کمک کردن داشتم موفق باشید.
با حرفاتان موافقم ولی من برای همین موضوع مقدار ندادن یک روز الاف بودم در ضمن من که برنامه را نخواستم فقط خواستم ببینم که چرا این جوری می شه که خب خدارا شکرمتوجه شدم
باز هم ممنون

khafan_bat
چهارشنبه 27 آبان 1388, 23:26 عصر
آقا اگه میدونستم اینطوریه جواب نمیدادم !!!

شوخی کردم. من هم با نظر این دست عزیز موافقم. مرسی که تذکر دادی ولی من خودم شخصا طاقتم خیلی کمه .. !!