一、Ackerman函数:

  ackerman函数的定义如下:

二、Ackerman函数的递归实现:

利用递归来实现ackerman函数是比较简单的:

 /*Sample Input:
0 1
1 1 Sample Output:
2
3
*/ #include<bits/stdc++.h>
using namespace std; int akm(int m, int n){
if(m == )return n+;
if(m != && n == )return akm(m-, );
if(m != && n != )return akm(m-, akm(m, n-));
} int main(){
int m, n;
while(cin >> m >> n){
cout << akm(m ,n) << endl;
}
}

三、利用栈来实现Ackerman函数:

  我们可以使用栈来模拟递归函数的过程,下列代码中,使用栈st来保存每个递归函数的参数m,tmp用来保存每个递归函数的返回值:

 /*Sample Input:
0 1
1 1 Sample Output:
2
3
*/ #include<bits/stdc++.h>
using namespace std; int akm(int m, int n){
stack<int>st;
int tmp;
while(true){
while(m > ){
if(n == ){
m--;
n = ;
}
else{
st.push(m - );
n--;
}
}
tmp = n + ;
if(st.empty())break;
else{
m = st.top();
n = tmp;
}
st.pop();
} return tmp;
} int main(){
int m, n;
while(cin >> m >> n){
cout << akm(m ,n) << endl;
}
}

  //End

最新文章

  1. 谈谈favicon和他带来的问题
  2. xcode 打静态库.a文件
  3. Cacti客户端SNMP的安装和配置
  4. UWP开发入门(十四)—— UserControl中Adaptive UI的小技巧
  5. aliyun install php apache mysql nginx
  6. (原创)如何在spannableString中使用自定义字体
  7. js 判断url的?后参数是否包含某个字符串
  8. CRM Entity 之Money转string int类型等
  9. 原来你是个这样的JVM
  10. typings 命令使用注意
  11. SQL 查询中case的运用
  12. JavaScript 系列博客(一)
  13. 2017.11.7 ant design - upload 组件的使用, react 条件渲染以及 axios.all() 的使用
  14. IIS &quot;rewrite.dll failed to load. The data is the error.&quot; 错误解决方法
  15. encode decode enumerate
  16. iphone之使用讯飞语音sdk实现语音识别功能
  17. CentOS使用EPEL YUM源
  18. rm删除某个文件之外的文件
  19. Vue学习—组件的学习
  20. php 实现重定向的三种方式

热门文章

  1. winform窗体控件(全)
  2. spring mvc+ spring +mybatis
  3. iOS Photos.framework框架
  4. Centos6安装Gitlab
  5. YII2如何修改默认控制器/方法
  6. 解决Firefox/Opera 不支持onselectstart事件实现不允许用户select
  7. ARM Cortex-M0权威指南高清中文版pdf免费分享下载
  8. Caliburn.Micro学习笔记(五)----协同IResult
  9. 【翻译】DotNetMQ: 一个.NET版完整的消息队列系统
  10. C#程序员的春天之从零开始学习unity3D游戏开发入门教程二(创建项目及基本面板介绍)