阿克曼函数求解(递归和非递归)
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++
阿克曼函数求解(递归和非递归)相关推荐
- C++第七次作业(函数_递归与非递归_多文件)
文章目录: 一:C++递归与非递归实现整数的阶乘 代码实现 运行结果 二:C++递归与非递归实现Fibonacci数列的计算:a0=1; a1=1; a2=a0+a1; a3=a1+a2; ..... ...
- 编写函数 int fac(int x)计算 x!的值。在主函数中输入 n 和 m 的值,通过调用函数 fac 计算m Cn 的值(要求分别用递归和非递归的方法编写函数 fac)
编写函数 int fac(int x)计算 x!的值.在主函数中输入 n 和 m 的值,通过调用函数 fac 计算m Cn 的值(要求分别用递归和非递归的方法编写函数 fac) 递归: #includ ...
- c语言中fact函数怎么调用,C语言程序题: 1、编写一个求n!的函数fact(n),要求fact函数分别用递归和非递归两种方法实现...
点击查看C语言程序题: 1.编写一个求n!的函数fact(n),要求fact函数分别用递归和非递归两种方法实现具体信息 答:int fac(int n) //非递归{int f=1; for(;n;) ...
- 分别采用递归和非递归方式编写两个函数,求一棵二叉树中叶子节点个数
分别采用递归和非递归方式编写两个函数,求一棵二叉树中叶子节点个数 #include #include #define MAXSIZE 50 typedef char datatype; typedef ...
- 汉诺塔的改编题(用栈求解,分别递归和非递归)
限制不能从最左侧的塔直接移动到最右侧,也不能从最右侧直接移动到最左侧,而是必须经过中间,求当塔有N层的时候,打印最优移动过程和最优移动总步数 例如:当塔为两层时,最上层的塔记为1,最下层的塔记为2,则 ...
- C和指针之函数之实现阶乘和斐波那契数(递归和非递归)
1.问题 实现阶乘和斐波那契数(递归和非递归) 2.代码实现 #include <stdio.h>int num = 0; //递归实现斐波那契数 // n <=2, f(n) = ...
- 快速排序和归并排序中一趟的理解(递归和非递归)
引:2019年408中数据结构一道考察快速排序的选择题 答案:D 定位:这道题在考察快速排序中一趟的概念.注意,基本的冒泡,插入,选择排序的一趟概念很容易理解, 接下来我们要讨论的是递归排序算法中(本 ...
- 实验五 二叉树的递归及非递归的遍历及其应用
实验目的 熟练掌握二叉树的二叉链表存储结构的C语言实现.掌握二叉树的基本操作-前序.中序.后序遍历二叉树的三种方法.了解非递归遍历过程中"栈"的作用和状态,而且能灵活运用遍历算法实 ...
- 全排列(含递归和非递归的解法)
全排列在近几年各大网络公司的笔试中出现的比较频繁 首先来看看题目是如何要求的(百度迅雷校招笔试题). 用C++写一个函数, 如 Foo(const char *str), 打印出 str 的全排列, ...
- C#实现(递归和非递归)快速排序和简单排序
C#实现(递归和非递归)快速排序和简单排序 本人因为最近工作用到了一些排序算法,就把几个简单的排序算法,想冒泡排序,选择排序,插入排序,奇偶排序和快速排序等整理了出来,代码用C#代码实现,并且通过了测 ...
最新文章
- python四十三:静态属性,类方法
- 【渝粤教育】国家开放大学2019年春季 1362应用语言学 参考试题
- 汽车电子专业知识篇(十六)-整车电气系统设计——高压系统框架略读
- Redis数据类型--列表类型
- Python数据分析入门(四)
- 【AI视野·今日CV 计算机视觉论文速览 第208期】Fri, 28 May 2021
- Ubantu16.04LTS麒麟版:取消登录界面的客人回话
- 拓端tecdat|R语言主成分分析(PCA)葡萄酒可视化:主成分得分散点图和载荷图
- [傅里叶变换及其应用学习笔记] 七. 傅里叶正(反)变换复习
- Android 传感器概述
- 计算机一级改扩展名,怎么改文件扩展名,教您电脑win7改文件扩展名的方法
- Adobe Photoshop裁剪和拉直照片改善构图
- IntelliJ 代码颜色含义
- JavaScript中的静态函数
- [Eclipse手册]设置pom.xml打开方式
- c语言输出五角星程序,c语言入门之绘制五角星.doc
- 移动性能测试工具perfDog分享和wifi链接问题
- 高中计算机学什么软件,高中学业水平考试的计算机上机考试考的是啥软件
- 【产品】OEM、ODM、OBM是什么?
- 垃圾分类查询小程序(可回收物、有害垃圾、干垃圾、湿垃圾)
热门文章
- Java实现微信轰炸
- Strip iPhone6
- 招银网络Java后端笔试题
- 怎么把python写的程序打包成软件_python怎么把软件打包出来
- Could not connect to any servers in your MongoDB Atlas cluster. One common reason is that you‘re try
- node ajax实现登录注册,nodejs实现简易登录注册
- Redis 客户端工具
- 想对可以使用的adblock插件感谢!!
- 银行转账系统(Spring小项目)
- php 坏了怎么修复,winload.exe丢失或损坏怎么办