В настоящее время я разрабатываю Фибоначчи для проекта, у меня были некоторые проблемы с управлением памятью. Во время реализации я выполняю итеративную структуру с for и рекурсивной функцией rfib. Кажется, что проблема с памятью, хотя процесс печати все в порядке. Ошибка, показанная после модификаций: нижний 1 (процесс 8076) вышел нормально
void rfib(int *fib, int x, int last);
int main (int argc, char *argv[]) {
int N,x;
int *s = NULL;
char *str, *str2;
if(argv[1] == NULL) {
exit(1);
}
N = atoi(argv[1]);
s = malloc(sizeof(int)*N);
str = malloc(sizeof(char)*N);
str2 = malloc(sizeof(char)*N);
if (s==NULL) {
exit(1);
}
s[0]=0;
s[1]=1;
// Calculate Fibonacci Serie.
for (x=2;x<N;x++) {
s[x] = s[x-2] + s[x-1];
}
// Print Fibonacci Serie.
str2 = "Iterative Fibonacci Calculation";
for (x=0;x<N;x++) {
sprintf(str,"%s %d: %d\n",str2, x, s[x]);
write(1,str,strlen(str));
}
rfib(s,0,N);
//Print Fibonacci Serie.
str2 = "Recursive Fibonacci calculation";
for (x=0;x<N;x++) {
sprintf(str,"%s %d: %d\n", str2, x, s[x]);
write(1,str,strlen(str));
}
str2 = NULL;
str = NULL;
s = NULL;
free(str2);
free(str);
free(s);
exit(0);
}
void rfib(int *fib, int x, int last) {
if (x == 0) {
fib[0] = 0;
} else if (x == 1) {
fib[1] = 1;
} else if (x > 1) {
fib[x] = fib[x-1] + fib[x-2];
}
if (x != last) {
rfib(fib,x + 1,last);
}
}