• ベストアンサー
  • 困ってます

再帰呼び出し

  • 質問No.1422879
  • 閲覧数373
  • ありがとう数3
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 0% (0/15)

アッカーマン関数の値を出力するプログラム
#include
void main(void);
int ack(int,int);

void main(void)
{
int x,y,i;
printf(" data(x) = "); scanf("%d",&x);
printf(" data(y) = "); scanf("%d",&y);
i = ack(x,y);
printf("Ackerman = %d\n",i);
}

int ack(int a,int b)
{
int k;
if (a == 0)
k = b+1;
else if (b == 0)
k = ack(a-1,1);
else
k = ack(a-1,ack(a,b-1));
return (k);
}

この関数を呼び出した回数も出力するようにしたいのですが、どうしたらいいのでしょうか?

質問者が選んだベストアンサー

  • 回答No.2
  • ベストアンサー

ベストアンサー率 52% (391/751)

もっとも手っ取り早い方法は、以下の方法です。(#1のかたの1)の方法の具体例になります。)
int kaisu = 0;を
void main(void)の上で定義します。

int kaisu = 0;
void main(void) のようになります。

int ack(int a,int b)
の関数の実行文の先頭に
kaisu++;を記述します。

mainがactを呼び出した後で、kaisuを印字します。

その他の回答 (全1件)

  • 回答No.1

ベストアンサー率 35% (632/1788)

1)グローバル変数int count = 0;を用意して、
関数に入った所で、count++;

2)関数内に静的局所変数static int count = 0;を用意して、
関数に入った所で、count++;
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ