問一道C語言題,已知Ackermann函數定義如下:A(m,n)=n+1 if m=0 A(

題目:

問一道C語言題,已知Ackermann()函數定義如下:A(m,n)=n+1 if m=0 A(
問一道C語言題,已知Ackermann()函數定義如下:
A(m,n)=n+1 if m=0
A(m,n)=ack(m-1,1) if m0 n=0
A(m,n)=(m-1,ack(m,n-1)) if m0 n0
用遞歸實現該函數,並編寫一個主函數調用它!
c語言初學者,這個函數貌似書上沒有,而且m0這個表示什麼意思不懂,麻煩大家幫個忙,最好能寫出程序,感激不盡!

解答:

#include <stdio.h>

int Ackermann(int m, int n)
{
  if (m == 0) return n + 1;
  if (n == 0) return Ackermann(m - 1, 1);
  return Ackermann(m - 1, Ackermann(m, n - 1));
}

int main()
{
  int m, n, a;
  scanf("%d%d", &m, &n);
  a = Ackermann(m, n);
  printf("A(%d, %d) = %d\n", m, n, a);
  return 0;
}

添加新評論

暱稱
郵箱
網站