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 ループが不完全です。シーケンス値を実際に計算するコードすら含まれていません。

次の問題は、ここで fork する目的です。やりたいことは、単純な逐次計算を実行することです。フォークは一切必要ありません。

これを採点のために提出する前に、これについてもう少し作業することをお勧めします。

于 2010-05-21T07:47:02.727 に答える