从右下角的格子往左上角的格子递归:

到当前格子(n,m)的方法只有从左边(n-1,m)与上边(n,m-1),即到当前格子的总走法等于到(n-1,m)+(n,m-1)的走法;

递归出口为当前格子为上边界或者左边界时,只有一种走法。

#include <iostream>
#include<vector>
using namespace std;

int pathnum(int a,int b){
    if(a==0||b==0){
        return 1;
    }
    return pathnum(a-1,b)+pathnum(a,b-1);
}
int main() {
    int n, m;
    while (cin >> n >> m) { 
        cout<<pathnum(n,m)<<endl;
    }
}