递归计算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 = Ack(m - 1, Ack(m, n - 1));
16     }
17
18     return ret;
19 }

原文地址:https://www.cnblogs.com/2018jason/p/12233438.html

时间: 2024-10-09 05:05:50

递归计算Ackermenn函数的相关文章

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

6-2 递归计算Ackermenn函数 (15 分) 本题要求实现Ackermenn函数的计算,其函数定义如下: 函数接口定义: int Ack( int m, int n ); 其中m和n是用户传入的非负整数.函数Ack返回Ackermenn函数的相应值.题目保证输入输出都在长整型 范围内. 裁判测试程序样例: #include <stdio.h> int Ack( int m, int n ); int main() { int m, n; scanf("%d %d",

Python 递归计算分数数列

C语言的课后习题 求数列:2/1,3/2,5/3,8/5,13/8,21/13,...前50项的和 数列规律: 第二项的分母是[前一项分子] 第二项的分子是[前一项分子与分母的和] from fractions import Fraction def fn(x): """ 计算每一项的值 """ time = 1 fz = 2 fm = 1 if x == 1:return fz / fm #if x == 1:return Fraction(f

Nim 游戏、SG 函数、游戏的和

Nim游戏 Nim游戏定义 Nim游戏是组合游戏(Combinatorial Games)的一种,准确来说,属于"Impartial Combinatorial Games"(以下简称ICG).满足以下条件的游戏是ICG(可能不太严谨):1.有两名选手:2.两名选手交替对游戏进行移动(move),每次一步,选手可以在(一般而言)有限的合法移动集合中任选一种进行移动:3.对于游戏的任何一种可能的局面,合法的移动集合只取决于这个局面本身,不取决于轮到哪名选手操作.以前的任何操作.骰子的点数

进阶 第四课:函数(第四节)

step1: 习题反馈 step2: lambda之再议 1. lambda是一个表达式 2. 它没有名称,存储也不是代码块,而是表达式 3. 它被用作执行很小单元, 不能在里面使用条件语句 step3:参数总结 1. 位置匹配 func(name) 2. 关键字匹配 func(key=value) 3. 收集匹配 1)元组收集 func(name, arg1, arg2) 2) 字典收集 func(name, key1 = value1, key2 = value2) 4. 参数顺序 step

JS 不定函数参数argument的用法

本篇文章只要是对js的隐含参数(arguments,callee,caller)使用方法进行了介绍. arguments arguments 该对象代表正在执行的函数和调用它的函数的参数. [function.]arguments[n]参数function:当前正在执行的 Function 对象的名字. n :要传递给 Function 对象的从0开始的参数值索引.说明Arguments是进行函数调用时,除了指定的参数外,还另外创建的一个隐藏对象.Arguments是一个类似数组但不是数组的对象

C语言--&gt;(八)函数

知识点: 1.函数基础 2.函数参数和返回值 3.形参和实参,变量的类型 4.函数声明 5.函数递归 ==========================函数基础 1.函数的定义格式 返回值类型  函数名(参数列表) { 函数体 } 功能函数 // 函数可以没有形参play() { // 在这个大括号里面说清楚函数是干啥(里面包含了什么代码) printf("播放了MP3\n"); } 返回值,参数 形参:定义函数的时候,函数后面()中的变量 实参:调用函数的时候,传进去的值 #inc

ji中的函数

[函数的声明及调用] 基础知识 1.函数声明的格式: function 函数名(参数1,参数2,....){ //函数体 return 结果: } >>>函数调用的格式: 直接调用:函数名(参数1的值,参数2的值,...) 事件调用:事件名=函数名(): 2.函数声明的几点强调: ① 函数名的声明,必须符合小驼峰法则(首字母小写,之后每个单词首字母大写): ② 参数列表,可以有参数,可以无参数.分别称为有参函数,无参函数: ③ 声明函数时的参数列表,称为"形参列表"(

模拟实现常用字符串函数

1.查找子字符串函数strstr的实现 char *  my_strstr(const char * dest, const char * src)//const保护字符串不被更改 { assert(dest); assert(src);     //断言 char * ptr1 = NULL; char * ptr2 = src; while (*dest) { ptr1 = dest;//保留匹配成功后的位置指针 src = ptr2;//保留匹配失败后,字串的同样指针 while (*de

Delphi基本之pascal语法(第五章.函数与过程程序设计)

第五章.函数与过程程序设计一.函数(包括标准函数和自定义函数) 1.函数的定义 格式:FUNCTION 函数名(<形参表>):返回值类型: VAR <变量说明> BEGIN <函数体> END [注]:1.形参表每个参数都写明其类型: 2.有且只有一个返回值,并且要将返回值赋值给函数名. [例]:求五边形的面积 function area(a,b,c:real):real; var p:real; begin p:=(a+b+c)/2; area:=sqrt(p*(p-