0

我必须编写一个小程序来显示从 1 到 n 的斐波那契数列。1到18效果很好。但是从 19 开始,程序什么也不做,只是在完成后退出。我找不到错误...所以请给我一个提示。

#include<sys/types.h>
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>

int main(int argc, char **argv)
{
  pid_t pid;
  int fib[argc];
  int i, size;
  size = strtol(argv[1], NULL, 0L);
  fib[0] = 0;
  fib[1] = 1;
  pid = fork();
  printf("size = %d \n", size);
  if(pid == 0){
    for(i = 2; i < size; i++){
      fib[i] = fib[i-1] + fib[i-2];
    }
    for(i = 0; i < size; i++){
      printf("\n\t %d ", fib[i]);
    }
  }
  else if(pid > 0){ // Parent, because pid > 0
    wait(NULL);
    printf("\n");
    exit(1);
  }
}
4

2 回答 2

1

一些问题是:

  1. fib[0]应该1,不是0
  2. fib数组大小错误。
  3. 并且数组fib也定义错误。
  4. 似乎for填充随机成员,而不是fib数组元素。
于 2010-05-21T07:48:38.667 回答
0

这段代码看起来仍然不是很好。您尚未发布包含且 for-loop 不完整。它甚至不包含实际计算序列值的代码。

下一个问题是这里分叉的目的。您要做的是执行简单的顺序计算。根本不需要叉子。

我建议在提交这个成绩之前做更多的工作。

于 2010-05-21T07:47:02.727 回答