アッケルマン関数
アッケルマン関数
ack(m,n)={ n+1 m=0のとき
{ ack(m-1,1) m>0,n=0のとき
{ ack(m-1,ack(m,n-1)) m>0,n>0のとき
をプログラムしたいのですが、再帰を使ったプログラムがうまく実行できません。どこがいけないのでしょうか?
#include<stdio.h>
int m,n;
int ack(int m, int n)
{
if (m = 0)
return n + 1;
if ((m > 0) && (n = 0))
return ack(m - 1, 1);
else
return ack(m - 1, ack(m, n - 1));
}
main()
{
int m,n;
printf("アッケルマン関数ack(m,n)を計算します。\n");
printf("自然数m,nを入力してください\n");
scanf("%d",&m);
scanf("%d",&n);
printf("アッケルマン関数ack(%d,%d)の値は%dです。\n", m, n, ack(m,n));
}