2016-05-28 5 views
-1
// Define the recursive function. 
    int collatz(int p1) 
    { 
     // While Loop Starting 
     while (p1>1) 
     { 
     //when the number is even 
     if(p1%2==0) 
     { 
      p1 = p1/2; 
      printf("%d ", p1); 
     //using recursion 
      return collatz(p1); 
     } 
     // Case where number is odd. 
     elseif 
     { 
      p1 = 3*p1+1; 
      //print function 
      printf("%d ", p1); 
      //using recursion 
      return collatz(p1); 
     } 
     } 
    } 
    // Main body. 
    int main() 
    { 
     // Declare the variable and initialized it. 
     int p1= 4; 
     //print function 
    printf("User Entered value : %d\n", p1); 
     // Display the number 
     printf("%d\n", collatz(p1)); 
     //End 
     return 0; 
    } 

出力を繰り返しました。必要な作業をしてください。このCollat​​zシーケンスは

+0

1)CとC++は異なる言語です。一つを選ぶ! 2)これはCでもC++でもありません。 3)[ask]を参照してください。 – Olaf

+0

私はCで書いた – chandu

+0

なぜ別の言語のタグを追加したのですか?他の2つの問題を尊重して質問を編集してください。 – Olaf

答えて

0

CまたはC++プログラムをコンパイルするときは、常に警告を有効にする必要があります。完了したら、コンパイラは、関数collatzが値を返さずに終了する可能性があることを警告していました。 (引数が1の場合はどうなりますか?)

これは未定義の動作ですので、main関数ではおそらく存在しない戻り値を使用しています。

したがって、メインに1を印刷するのは単なるチャンスです。しかし、何が印刷されたのかは、出力がcollatzに印刷されたものに限定されていると思われるので間違っています。

コンピュータを再生して、鉛筆と紙で機能を実行してみてください。それはあまり時間がかかりません。もちろん、デバッガを使用することもできます。

+0

私はLinuxプログラミング環境に取り組んでいません。私はCプログラミングの新人です。私は、VMWareマシンのLinux環境でのデバッグを認識していません。 – chandu

+0

@chandu:そうですね、私はそれほど疑わしいので、私は鉛筆と紙の使用を提案しました。しかし、プログラミングの仕方を真剣に考えているなら、最終的にはデバッガの使い方を知っておく必要があります。 – rici

+0

whileループでのみ何かを修正する必要があります。 – chandu

関連する問題