B阿克曼函数
阿克曼(Arkmann)函数 A(m,n) 中,m与n的定义域是非负整数且本题中m<=3,n<=16。

函数的定义为:

以上结果是使用下面的递归函数跑出来的结果,超时(time limit exceed=TLE)。
超时代码

#include<iostream>
using namespace std;int akm(int m,int n){if(m==0) return n+1;if(m>0&&n==0) return akm(m-1,1);if(m>0&&n>0) return akm(m-1,akm(m,n-1));}
int main(){int m,n;cin>>m>>n;cout<<akm(m,n)<<endl; }

解析
看见别人用以上代码打表,然后推出来公式。
规律如下
akm(0,n)=n+1akm(0,n)=n+1akm(0,n)=n+1
akm(1,n)=n+2akm(1,n)=n+2akm(1,n)=n+2
akm(2,n)=2n+3akm(2,n)=2n+3akm(2,n)=2n+3
akm(3,n)=2n+3−3akm(3,n)=2^{n+3}-3akm(3,n)=2n+3−3

ac代码
函数pow在头文件cmath

#include<iostream>
#include<cmath>//pow函数
using namespace std;int main(){int m,n;cin>>m>>n;if(m==0) cout<<n+1<<endl;if(m==1) cout<<n+2<<endl;if(m==2) cout<<2*n+3<<endl;if(m==3) cout<<pow(2,n+3)-3<<endl;
}

非递归解法待补充

参考关于阿克曼函数(akermann)非递归算法的一点见解 c++

阿克曼函数求解(递归和非递归)相关推荐

  1. C++第七次作业(函数_递归与非递归_多文件)

    文章目录: 一:C++递归与非递归实现整数的阶乘 代码实现 运行结果 二:C++递归与非递归实现Fibonacci数列的计算:a0=1; a1=1; a2=a0+a1; a3=a1+a2; ..... ...

  2. 编写函数 int fac(int x)计算 x!的值。在主函数中输入 n 和 m 的值,通过调用函数 fac 计算m Cn 的值(要求分别用递归和非递归的方法编写函数 fac)

    编写函数 int fac(int x)计算 x!的值.在主函数中输入 n 和 m 的值,通过调用函数 fac 计算m Cn 的值(要求分别用递归和非递归的方法编写函数 fac) 递归: #includ ...

  3. c语言中fact函数怎么调用,C语言程序题: 1、编写一个求n!的函数fact(n),要求fact函数分别用递归和非递归两种方法实现...

    点击查看C语言程序题: 1.编写一个求n!的函数fact(n),要求fact函数分别用递归和非递归两种方法实现具体信息 答:int fac(int n) //非递归{int f=1; for(;n;) ...

  4. 分别采用递归和非递归方式编写两个函数,求一棵二叉树中叶子节点个数

    分别采用递归和非递归方式编写两个函数,求一棵二叉树中叶子节点个数 #include #include #define MAXSIZE 50 typedef char datatype; typedef ...

  5. 汉诺塔的改编题(用栈求解,分别递归和非递归)

    限制不能从最左侧的塔直接移动到最右侧,也不能从最右侧直接移动到最左侧,而是必须经过中间,求当塔有N层的时候,打印最优移动过程和最优移动总步数 例如:当塔为两层时,最上层的塔记为1,最下层的塔记为2,则 ...

  6. C和指针之函数之实现阶乘和斐波那契数(递归和非递归)

    1.问题 实现阶乘和斐波那契数(递归和非递归) 2.代码实现 #include <stdio.h>int num = 0; //递归实现斐波那契数 // n <=2, f(n) = ...

  7. 快速排序和归并排序中一趟的理解(递归和非递归)

    引:2019年408中数据结构一道考察快速排序的选择题 答案:D 定位:这道题在考察快速排序中一趟的概念.注意,基本的冒泡,插入,选择排序的一趟概念很容易理解, 接下来我们要讨论的是递归排序算法中(本 ...

  8. 实验五 二叉树的递归及非递归的遍历及其应用

    实验目的 熟练掌握二叉树的二叉链表存储结构的C语言实现.掌握二叉树的基本操作-前序.中序.后序遍历二叉树的三种方法.了解非递归遍历过程中"栈"的作用和状态,而且能灵活运用遍历算法实 ...

  9. 全排列(含递归和非递归的解法)

    全排列在近几年各大网络公司的笔试中出现的比较频繁 首先来看看题目是如何要求的(百度迅雷校招笔试题). 用C++写一个函数, 如 Foo(const char *str), 打印出 str 的全排列, ...

  10. C#实现(递归和非递归)快速排序和简单排序

    C#实现(递归和非递归)快速排序和简单排序 本人因为最近工作用到了一些排序算法,就把几个简单的排序算法,想冒泡排序,选择排序,插入排序,奇偶排序和快速排序等整理了出来,代码用C#代码实现,并且通过了测 ...

最新文章

  1. python四十三:静态属性,类方法
  2. 【渝粤教育】国家开放大学2019年春季 1362应用语言学 参考试题
  3. 汽车电子专业知识篇(十六)-整车电气系统设计——高压系统框架略读
  4. Redis数据类型--列表类型
  5. Python数据分析入门(四)
  6. 【AI视野·今日CV 计算机视觉论文速览 第208期】Fri, 28 May 2021
  7. Ubantu16.04LTS麒麟版:取消登录界面的客人回话
  8. 拓端tecdat|R语言主成分分析(PCA)葡萄酒可视化:主成分得分散点图和载荷图
  9. [傅里叶变换及其应用学习笔记] 七. 傅里叶正(反)变换复习
  10. Android 传感器概述
  11. 计算机一级改扩展名,怎么改文件扩展名,教您电脑win7改文件扩展名的方法
  12. Adobe Photoshop裁剪和拉直照片改善构图
  13. IntelliJ 代码颜色含义
  14. JavaScript中的静态函数
  15. [Eclipse手册]设置pom.xml打开方式
  16. c语言输出五角星程序,c语言入门之绘制五角星.doc
  17. 移动性能测试工具perfDog分享和wifi链接问题
  18. 高中计算机学什么软件,高中学业水平考试的计算机上机考试考的是啥软件
  19. 【产品】OEM、ODM、OBM是什么?
  20. 垃圾分类查询小程序(可回收物、有害垃圾、干垃圾、湿垃圾)

热门文章

  1. Java实现微信轰炸
  2. Strip iPhone6
  3. 招银网络Java后端笔试题
  4. 怎么把python写的程序打包成软件_python怎么把软件打包出来
  5. Could not connect to any servers in your MongoDB Atlas cluster. One common reason is that you‘re try
  6. node ajax实现登录注册,nodejs实现简易登录注册
  7. Redis 客户端工具
  8. 想对可以使用的adblock插件感谢!!
  9. 银行转账系统(Spring小项目)
  10. php 坏了怎么修复,winload.exe丢失或损坏怎么办