مشاهدة النسخة كاملة : Fibonacci Series اين الخطأ؟


kookai
05-08-2006, 12:14 PM
السلام عليكم ورحمة الله وبركاته

اخواني الكرام لدي سؤال وحاولة اني اجد له حل ولكن مع الاسف يوجد خطأ ومحتاج مساعدتكم
السؤال

Please Write
The Fibonacci series
0, 1, 1, 2, 3, 5, 8, 13, 21, ...
begins with the terms 0 and 1 and has the property that each succeeding term is the sum of the two preceding terms.
(a) Write a nonrecursive function fibonacci( n ) that calculates the nth Fibonacci number.

where error?

1 error(s), 0 warning(s)



# include <iostream.h>
int fibonacci(int n)
**
int x1 = 0, fib;
int x2 = 1;
if(n >= 1)
**
for(int i=2;i<= n; i++)
**
fib = x1+ x2;
x1 = x2;
x2 = fib;
}

return fib;
}

Mr.Time1
05-08-2006, 01:20 PM
عزيزي كودك صحيح نسبياً وخطأه بسيط
نصيحتي لك عند فتح قوس حاظنة } قم بكتابة تعليق عنده او اعطائه رقم على شكل تعليق
وعند اغلاقه اكتب انه تم اغلاق القوس او اغلاق الرقم بتعليق اخر
بالنسبة لكودك الخطأ فيه انه لم يتم اغلاق قوس IF
وهذا هو الكود بعد التعديل
int fibonacci(int n)
**
int x1 = 0, fib;
int x2 = 1;
if(n >= 1)
**
for(int i=2;i<= n; i++)
**
fib = x1+ x2;
x1 = x2;
x2 = fib;
}
}
return fib;
}

هذا والله اعلم

منطلق بطموحي
05-08-2006, 06:01 PM
السلام عليكم:

أخي الخطأ غير تعديل اخي Mr-Time كالتالي:

متتالية فيبوناتشي هي : 1,1,2,3,5,8,13 الخ

اي انها تبدأ 1و1 ثم نقوم بجمع العددين السابقين ...

حسنا انت قمت بذلك و لكن بدأت من عند الموقع الثاني و هو 1,3,5


#include<iostream>
using namespace std;


int fibonacci(int n)
**
int x1 = 0, fib;
int x2 = 1;
if(n >= 1)
**
for(int i=2;i<= n; i++)
**
fib = x1+ x2;
x1 = x2;
x2 = fib;
}}


return fib;
}

int main()**
for(int i=2;i<=10;i++) **
cout<<fibonacci(i)<<endl;
}
return 0;
}

كما في هذا الكود

و لكن لكي تعدل هذا الشيء يجب ان تطبع الشروط عند الموقع صفر و الموقع الاول و هما 1,1
اي ان تخبر البرنامج
if(position==0||position==1)
print 1



بانتظار تعديلك

wafk

Mr.Time1
06-08-2006, 01:03 AM
المعذرة اخواني
لم انتبه الا الخطأ في الصياغة
انا لم انتبه إلا للخطأ القواعدي الذي اورده الاخ kookai

طبعا لا اريد الاستزادة على كلام الاستاذ منطلق بطموحي (على فكرة عاجبني توقيعك )
لكن احب اضيف شئ
اخي kookai
سلسة Fibonacci هي افضل مثال على مفهوم متعلق بالدوال يسمى (العودية)
سأحاول كتابة الداله لك لكن بمثال العودية

unsigned long Fibonacci(unsigned long n)
**
if (n==0||n==1)
return n;
else
return Fibonacci(n-1)+Fibonacci(n-2);
}

هذا والله اعلم

kookai
06-08-2006, 01:45 AM
السلام عليكم

اشكر لاخ Mr.Time1 على الرد الجميل

وكذلك الاخ العزيز منطلق بطموحي بصراحه هذا هو الكود المطلوب بشكل مناسب ولا يحتاج إلا تعديل بسيط جدا وهو بدل ما تظهر الارقام بشكل عامودي اريدها تظهر بشكل افقي ومتفرقه

لهذا عدلت فقط هنا
cout<<fibonacci(i)<<" ";

بارك الله فيكم