对上面的公式进行非递归练习,用到二维数组。
//递归练习
#include<iostream>
using namespace std;
int f(int m,int n)
{
/*递归方式
if(1==m)
return n;
if(1==n)
return m;
if(m>1&&n>1)
return f(m-1,n)+f(m,n-1);*/
//非递归方式
int i,j;
int a[100][100];
for(i=0;i<m;i++)
a[i][0]=i+1;
for(j=1;j<n;j++)
a[0][j]=j+1;
for(i=1;i<m;i++)
for(j=1;j<n;j++)
a[i][j]=a[i-1][j]+a[i][j-1];
return a[m-1][n-1];
}
int main()
{
int m,n;
cout<<"Please enter m,n:";
while(scanf("%d %d",&m,&n)==2)
{
f(m,n);
cout<<"The result is:"<<f(m,n)<<endl;
cout<<"Please enter m,n:";
}
}