当前位置:首页 » 编程语言 » ackerman函数c语言
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

ackerman函数c语言

发布时间: 2023-01-26 18:27:39

① 简单c语言编程....己知ackerman函数,对于m>=0和n>=0的如下定义:

这是最基本的递归用法的题目:我用3分钟编写如下:
并且调试成功。

#include<stdio.h>
int ack(int m,int n)
{
int x;
if(m==0&&n==1) x=2;
if(m==1&&n==0) x=2;
if(m>0&&n>0) x=ack(m-1,ack(m,n-1));

return x;
}

void main()
{
int m,n;
printf("Please input 2 int : m,n=");
scanf("%d%d",&m,&n);
printf("ack(m,n)=%d\n",ack(m,n));
}

② c语言 计算Ackermann函数。

你的n、x、y都是int型的,其值要小于65536,但是但输入数字nxy分别为4,2,4时就达到65536,所以程序本身并没有问题,有问题的是数值类型的取值范围太小。而且这个函数计算值过于巨大,如果输入nxy过大一般计算机根本没办法计算。。。

③ 利用递归法求阿克曼函数

这里给出C语言的阿克曼递归函数:首先,阿克曼函数标准定义:#include <stdio.h>
#include <stdlib.h>int Ackmann(int n,int m)
{
if(m==0)return n+1;
else if(m>0 && n==0)return Ackmann(m-1,1);
else return Ackmann(m-1,Ackmann(m,n-1));
}int main()
{
int m,n;
printf("输入m和n:");
scanf("%d,%d",&m,&n);
printf("结果是:%d",Ackmann(n,m));
system("pause");
return 0;
}

④ Ackerman函数 C语言程序

#include"stdio.h"
int Ackerman(int n,int m)
{
if(n==1&&m==0)
return 2;
else if(n==0&&m>=0)
return 1;
else if(n>=2&&m==0)
return n + 2;
else if(n>=1&&m>=1)
return Ackerman(Ackerman(n - 1,m),m - 1);
}
int main()
{
int n,m;
scanf("%d%d",&n,&m);
printf("%d\n",Ackerman(n,m));
return 0;
}