-5

出力は次のようになります。

0 1 1 2 3 5 8 13..

..13 8 5 3 2 1 1 0

Java で 2 つの配列を使用し、それら 2 つの配列で Arrays.tostring() を使用して両方の値を出力することを考えましたが、それでも 1 つのループで解決できませんでした。それとは別に、私はこのようにしてみます

int main()
{
   int n,j,c;
   int a=0,b=1;
   printf("enter total no of terms:");
   scanf("%d",&n);
   int arr[n];
   arr[0]=a;
   arr[1]=b;

   printf("%d\t %d\t",arr[0],arr[1]);

    for(j=2;j<=((2*n)-1);j++)
    {  
       if(j<=n-1)
       {
          c=a+b;
          arr[j]=c;
          printf("%d\t",arr[j]);
          a=b;
          b=c;
          if(j==n-1)
           printf("\n");

       }
       else
       {  
           arr[j]=b;
           printf("%d\t",arr[j]);
           c=a;
           a=b-a;
           b=c;
       }


    }  

  getch();
} 

これで問題は解決しますが、この質問に対するより短くて効率的な方法はありますか?

4

1 に答える 1

1

値が 0、1 (int num1 = 0;および int int num2 = 1;)、未定義 ( int num3;) の 3 つの変数から始めます。1 と 2 を印刷します。13 回まで行って戻る場合は、12 回のループを実行します。ループ内で、ループが 6 回実行されたかどうかを確認します (インデックスが 0 から始まる場合、インデックス <6)。はいの場合、num1+num2 の値を num3 に挿入します。そうでない場合は、num3 に の値を挿入します。その後、num3 を出力し、num2 を num1 に、num3 を num2 に移動します ( num1=num2; num2=num3;)

于 2013-08-26T12:58:50.283 に答える