یک سوال کوچک (فیبو)

alirezabe

New Member
سلام
من یک تابع فیبوناچی به صورت بازگشتی نوشتم
حالا می خواهم تعداد فراخوانی تابع را برای هر عدد نشان دهد مثلا برای 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;
}
 

the_king

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

دلیل بروز این مشکل خیلی ساده است، متغیری به نام count ساخته اید که چند بایت از حافظه به آن
تخصیص داده می شود ولی مقدار اولیه ای برایش تعیین نکرده اید، به همین جهت ممکن است در همان
ابتدای اجرای برنامه هر مقدار نامربوطی در آن بخش از حافظه وجود داشته باشد :
کد:
	long count;

به دلیل بکارگیری ++counter، این مقدار نامربوط را افزایش خواهید داد و مقدارنهایی قابل پیش بینی نیست.
تعیین کردن مقدار اولیه را فراموش نکنید :
کد:
	long count = 0;
 

جدیدترین ارسال ها

بالا