任务描述
本关任务:编写一个ackerman()函数,对于m≥0 和 n≥0有如下定义: ack(0,n)=n+1ack(m,0)=ack(m−1,1)ack(m,n)=ack(m−1,ack(m,n−1))
主函数代码
#include<stdio.h>#include "fun.h"int main(){int m, n;scanf("%d%d", &m, &n);printf("%d", ack(m, n));return 0;}
编程要求
根据提示,在右侧编辑器补充代码,计算并输出函数值。
测试说明
平台会对你编写的代码进行测试:
测试输入: 1 3 预期输出:
开始你的任务吧,祝你成功!
int ack(int m,int n)
{
if(m==0)
{
n=n+1;
return n;
}
else if(m>0&&n==0)
{
return ack(m-1,1);
}
else if(m>0&&n>0)
return ack(m-1,ack(m,n-1));
}
该博客主要介绍了一个编程任务,即编写 Ackermann 函数的实现。 Ackermann 函数是一个递归函数,用于演示非Primitive Recursion的概念。在提供的代码中,已给出了函数的递归定义,并且设置了一个主函数进行测试。输入参数 m 和 n 都是非负整数,函数返回值是根据给定的递归规则计算得出的结果。在测试阶段,将对函数进行调用,例如输入 m=1, n=3,预期输出为 5。
第1关:ackerman()函数&spm=1001.2101.3001.5002&articleId=128508109&d=1&t=3&u=ab07b618a7f84ab9b85fcac5149ff4a7)
4797

被折叠的 条评论
为什么被折叠?



