-1

この関数への再帰呼び出しを計算するにはどうすればよいですか?また、それに対する正しい答えは何ですか????

int func(x,y)
{
  if (x % y == 0) return y;
  x = x % y; 
  return func(y,x);
}

ここで本当に混乱しているための式、または説明または一般的な表現が必要ですか?????

4

4 に答える 4

2

グローバル変数を使用するのは簡単な解決策です。

    int i;
    main()
    {

        i=0; //if you want to avoid main call just start with i=-1     
        //if you are using loop and then calling function in loop ,  
        //make i value zero or -1 to know how many recursive calls are made to particular call.  

        func(x,y);

        //now i consists number of recursive calls made.
    }

    int func(int x,int y)
    {

        i++;
        if (x % y == 0) return m;
        x = x % y; 
        return func(y,x);
    }
于 2013-08-31T17:56:09.337 に答える
0

電話の回数ってどうやってわかるの?

さて、2つの方法があります。

  1. コードの計測: 関数の先頭までカウントする変数を追加し、関数が完了したら、カウントを出力します。

  2. 自分でコードをたどる: コンピューターのふりをして、各ステップを計算し、決定パスに従います。さまざまな入力に対してこれを行い、どのような結果が得られるかを確認してください。必要なステップ数を数えます。どこに戻るかを忘れずに考慮してください。再帰関数はそれ自体に戻ります。

正しい答えを見つける方法は?

上記と同様。

  1. コードを実行し、結果を出力します。
  2. コードを一通り見て、各ステップの結果と最終結果を把握します。
于 2013-08-31T19:07:56.297 に答える