一道简单的ACM递归题

编写递归函数Acm(m,n)实现如下图所示的Acm函数,其中m、n为正整数。例如:Acm(2,1)=5,Acm(3,2)=29。
Acm(m,n) = \begin{cases}n+1&(m=0)
\Acm(m-1,1)&(n=0)
\Acm(m-1,Acm(m,n-1))&(m>0,n>0)
\end{cases}
输入m和n两个整数,输出Acm(m,n)。如果n小于0或m小于0,则返回-1。
输入:2 1
输出:5

#include<iostream>
using namespace std;
int Acm(int m,int n)
{
    int a;
    if(m==0&&(n!=0))
    {
        a=n+1;
        return a;
    }
    if(n==0&&(m!=0))
        a=Acm(m-1,1);
    if(n>0&&m>0)
        a=Acm(m-1,Acm(m,n-1));
 if(m<0||n<0)
 {
  return -1;
 }
}
main()
{
    int m,n,result;
    cin>>m>>n;
    result=Acm(m,n);
    printf("%d\n",result);
}
发布了110 篇原创文章 · 获赞 97 · 访问量 5147

猜你喜欢

转载自blog.csdn.net/huangziguang/article/details/104807077