16-01-2009, 11:15
|
|
|
חבר מתאריך: 03.01.09
הודעות: 5
|
|
פונקציות רקורסיביות בשפת C
כתבתי תוכנה (להלן) בשפת C שפולטת את סדרת פיבונאצ'י בהתאם למספר האיברים שהמשתמש מגדיר. כידוע , לסדרת פיבונאצ'י יש הרבה תכונות מתמטיות מעניינות, ואחת מהן היא שהמנה של כל 2 מספרים עוקבים בסדרה שואפת ליחס הזהב, למשל:
קוד:
6765 / 4181 = 1.618…
כאשר ניסיתי לכתוב פונקציה המחשבת את המנה של כל 2 מספרים עוקבים בסדרה, המהדר החזיר שגיאה. אני לא בקיא בפונקציות ולכן רציתי לשאול - האם התחביר של הצהרת הפונקציה השנייה הוא השגיאה בתוכנה, כלומר האם ניתן להגדיר פונקציה אחרת כתחום הפעילות של פונקציה נתונה?
קוד מקור
קוד:
#include <stdio.h>
#include <conio.h>
// F I B O N A C C I N U M B E R S
int fib(int n)
{
if(n == 0 || n == 1)
return 1;
else
return (fib(n-1) + fib(n-2));
}
float gold(int fib(int n))
{
int n;
return ((fib(n-1)) / (fib(n-2)));
}
int main()
{
int n, lmt, press;
do
{
printf("Set a limit between 1 and 40: ");
scanf("%d", &lmt);
if(lmt <= 40)
{
for(n = 0; n < lmt; n++)
printf("%d\n", fib(n));
printf("Golden ratio %f\n", gold(fib(n)));
printf("\nPress 1 to continue.\n\n");
scanf("%d", &press);
}
else
{
printf("Cannot execute program with the limit you set. Press 1 to continue.\n\n");
scanf("%d", &press);
}
}
while(press == 1);
getch();
return 0;
}
|