6-2 递归计算Ackermenn函数 (15 分)

6-2 递归计算Ackermenn函数 (15 分)

本题要求实现Ackermenn函数的计算,其函数定义如下:

函数接口定义:

int Ack( int m, int n );

  

其中mn是用户传入的非负整数。函数Ack返回Ackermenn函数的相应值。题目保证输入输出都在长整型

范围内。

裁判测试程序样例:

#include <stdio.h>

int Ack( int m, int n );

int main()
{
    int m, n;

    scanf("%d %d", &m, &n);
    printf("%d\n", Ack(m, n));

    return 0;
}

/* 你的代码将被嵌在这里 */

  

输入样例:

2 3

  

输出样例:

9

  

int Ack( int m, int n )
{
    if(m == 0)
        return n+1;
    else if(n == 0 && m > 0)
        return Ack(m-1,1);
    else if(m >0 && n > 0)
        return Ack(m-1, Ack(m,n-1));
}

  

原文地址:https://www.cnblogs.com/Jie-Fei/p/10145055.html

时间: 2024-10-04 22:58:08

6-2 递归计算Ackermenn函数 (15 分)的相关文章

递归计算Ackermenn函数

https://pintia.cn/problem-sets/12/problems/355 1 int Ack(int m, int n) 2 { 3 int ret; 4 5 if (m == 0) 6 { 7 ret = n + 1; 8 } 9 else if (n == 0 && m > 0) 10 { 11 ret = Ack(m - 1, 1); 12 } 13 else if (m > 0 && n > 0) 14 { 15 ret = A

pta 数据结构 习题2.4 递增的整数序列链表的插入(15 分)

习题2.4 递增的整数序列链表的插入(15 分) 本题要求实现一个函数,在递增的整数序列链表(带头结点)中插入一个新整数,并保持该序列的有序性. 函数接口定义: List Insert( List L, ElementType X ); 其中List结构定义如下: typedef struct Node *PtrToNode; struct Node { ElementType Data; /* 存储结点数据 */ PtrToNode Next; /* 指向下一个结点的指针 */ }; type

习题2.5 两个有序链表序列的合并(15 分)&lt;有疑问?L1 L2 没办法变空&gt;

习题2.5 两个有序链表序列的合并(15 分) 本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列. 函数接口定义: List Merge( List L1, List L2 ); 其中List结构定义如下: typedef struct Node *PtrToNode; struct Node { ElementType Data; /* 存储结点数据 */ PtrToNode Next; /* 指向下一个结点的指针 */ }; typedef PtrToNode L

B1091 N-自守数 (15分)

B1091 N-自守数 (15分) 如果某个数 \(K\)的平方乘以\(N\) 以后,结果的末尾几位数等于 \(K\),那么就称这个数为"\(N\)-自守数".例如 \(3×92 ?^2 ?=25392\),而 25392 的末尾两位正好是 92,所以 92 是一个 3-自守数. 本题就请你编写程序判断一个给定的数字是否关于某个 N 是 N-自守数. 输入格式: 输入在第一行中给出正整数 \(M(≤20)\),随后一行给出 \(M\) 个待检测的.不超过 1000 的正整数. 输出格式

B1016 部分A+B (15分)

B1016 部分A+B (15分) 输入格式: 输入在一行中依次给出 A.DA.B.DB,中间以空格分隔,其中 \(0<A,B<10^10\). 输出格式: 在一行中输出 PA+PB的值. 输入样例 1: 3862767 6 13530293 3 输出样例 1: 399 输入样例 2: 3862767 1 13530293 8 思路 关键是首先处理出,只含有DA的字符串. 然后将该字符串转化为整数相加. 使用c++的特性 c++11 数值类型和字符串的相互转换 - 农民伯伯-Coding -

浙大版《C语言程序设计(第3版)》题目集 习题2-6 求阶乘序列前N项和 (15 分)

习题2-6 求阶乘序列前N项和 (15 分) 本题要求编写程序,计算序列 1!+2!+3!+? 的前N项之和. 输入格式: 输入在一行中给出一个不超过12的正整数N. 输出格式: 在一行中输出整数结果. 输入样例: 5 输出样例: 153 思路:利用函数阶乘累加. 代码如下: #include <stdio.h> long factorial(long n); int main() { long n; scanf("%ld",&n); printf("%l

浙大版《C语言程序设计(第3版)》题目集 练习4-7 求e的近似值 (15 分)

练习4-7 求e的近似值 (15 分) 自然常数e可以用级数1+1/1!+1/2!+?+1/n!来近似计算.本题要求对给定的非负整数n,求该级数的前n项和. 输入格式: 输入第一行中给出非负整数n(≤1000). 输出格式: 在一行中输出部分和的值,保留小数点后八位. 输入样例: 10 输出样例: 2.71828180 思路:用函数递归写阶乘,然后循环相加. 代码如下: #include <stdio.h> double f(double n); int main() { double n,

PAT乙级15分题易错题总结

PAT乙级15分题易错题总结 B1026 程序运行时间 输入格式: 输入在一行中顺序给出 2 个整数 C1 和 C2.注意两次获得的时钟打点数肯定不相同,即 C1 < C2,并且取值在 [0,107]. 输出格式: 在一行中输出被测函数运行的时间.运行时间必须按照 hh:mm:ss(即2位的 时:分:秒)格式输出:不足 1 秒的时间四舍五入到秒. 输入样例: 123 4577973 输出样例: 12:42:59 易忽略细节 在计算时,未能正确四舍五入,除100以后余数只要不为零都进位1.//er

JavaScript中有三个可以对字符串编码的函数,分别是: escape(),encodeURI(),encodeURIComponent()

JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent . 下面简单介绍一下它们的区别 1 escape()函数 定义和用法 escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串. 语法 escape(string) 参数  描述  string  必需.要被转义或编码的字符串. 返回值 已编码的