簡単な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);
}