PDA

View Full Version : اشکال کد فیبوناچی



idea novin
جمعه 18 آذر 1390, 10:47 صبح
سلام روز بخیر
این سورس فیبوناچیکه نوشتم کجاش غلطه ؟ اخه جمع 2جمله اخر رو فقط بهم میده اگه راهنماییم کنید ممنون میشم

#include <stdio.h>
#include <stdlib.h>
int main()
{int n;
printf("%d",fibo(4));
}
int fibo(int n){
if(n==0||n==1)
return n;
else
return fibo(n-1)+fibo(n-2);
}

majid1605
جمعه 18 آذر 1390, 11:20 صبح
چون تابع fibo رو بعد از تابع main تعریف کردی بایستی قبل از تابع main اونو معرفی می کردی (prototype)

این خط رو قبل از تابع main بزار

int fibo(int n);

یا می تونی تابع fibo رو بیاری قبل از main

idea novin
جمعه 18 آذر 1390, 12:16 عصر
ممنون از لطفتون اما انجام دادم بازم نشد

majid1605
جمعه 18 آذر 1390, 19:01 عصر
#include <stdio.h>
#include <stdlib.h>


int fibo(int n);

int main()
{int n;
printf("%d",fibo(6));
}
int fibo(int n){
if(n==0||n==1)
return n;
else
return fibo(n-1)+fibo(n-2);
}


این کد توی VS اجرا میشه مشکلی نداره
شما بگید پیغام خطا چیه تا بهتر راهنمایی کنیم

quiet_programmer
جمعه 18 آذر 1390, 20:06 عصر
باسلام.
دوستان توجه کنن این دوستمون منظورش از کجاش غلطه، خطای سینتکسی نیست خطای منطقیه.
چون توجه کنین:

اخه جمع 2جمله اخر رو فقط بهم میده اگه راهنماییم کنید ممنون میشم

با توجه به داشتن محاسبات اضافی در الگوریتم بازگشتی فیبوناچی برای چاپ سری فیبوناچی باید از روش دیگه ای استفاده بشه. مثلا استفاده از حلقه و آرایه.
برای مشاهده محاسبات تکراری درخت زیر رو ترسیم میکنیم. فیبوناچی 2 دو بار محاسبه میشه. واسه همین احتمالا نشه که سری رو با استفاده از این الگوریتم نمایش داد. باز دوستان اگه راه حلی به ذهنشون میرسه برای نمایش سری فیبوناچی با استفاده از الگوریتم بازگشتی، دریغ نکنن.

78950

یاحق.
موفق باشید/

idea novin
جمعه 18 آذر 1390, 20:21 عصر
ممنون از همتون
همونطور که گفتن هیچ اروری نداره اجرا هم میشه فقط مشکلش اینه که فقط مجموع 2جمله اخر رو میده سری چاپ نمیکنه نمیخوام از ارایه استفاده کنم نمیدونم مشکلش کجاست و چکار کنم...!!!!!!

majid1605
جمعه 18 آذر 1390, 22:18 عصر
#include <stdio.h>
#include <stdlib.h>


int fibo(int n);

int main()
{
int n = 6;
for (int i=1;i<=n;i++)
{
printf( "\t");
printf("%d",fibo(i));
}
printf( "\n");
}

int fibo(int n)
{
if(n==0||n==1)
return n;
else
return fibo(n-1)+fibo(n-2);
}
نیازی به آرایه نیست ولی واسه چاپ از حلقه باید استفاده بشه چون می خوایم یه کار تکراری رو چندین مرتبه انجام بدیم .مثل بالا

idea novin
شنبه 19 آذر 1390, 01:00 صبح
وای ی ی یییییییییی یدنیا ممنون ........:تشویق:
البته از همگی ممنونم