簡単なACM再帰問題


再帰関数Acm(m,n)の記述は、m,nが正の整数である、下図のようなAcm関数を実現する.例えば、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の2つの整数を入力し、Acm(m,n)を出力する.nが0未満またはmが0未満の場合、-1が返されます.入力:2 1出力:5
#include
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
"
,result); }