阿克曼(Ackmann)函数A(m,n)中,m,n定义域是非负整数(m<=3,n<=10),函数值定义为:
akm(m, n) = n+1; (m = 0时)
akm(m, n) = akm(m-1,1); (m>0, n = 0时)
akm(m, n) = akm(m-1, akm(m, n-1)); (m, n > 0时)
输入
输入m和n。
输出
函数值。
输入样例
2 3
输出样例
9
解析:按照题目给出的要求来写就行,上code!
不准直接抄!!!
#include <iostream>
using namespace std;
int ack(int m,int n)//定义阿克曼函数
{
//按照题目要求判断
if(m==0)
return n+1;//判断是否到达递归边界m=0
if(m>0&&n==0)
return ack(m-1,1);//判断是否到达递归边界n=0
if(m>0&&n>0)
return ack(m-1,ack(m,n-1));//否则继续递归
}
//递归边界分别判断 尽量不用else
int main(){
int m,n;
cin>>m>>n;
cout<<ack(m,n);
rerturn 0;
}
Ladies and gentlemen,赶紧用你发财的小手点个赞吧!