1.题目描述
链接:https://www.nowcoder.com/questionTerminal/e2a22f0305eb4f2f9846e7d644dba09b?toCommentId=573050
请编写一个函数(允许增加子函数),计算n×m个的棋盘格子(正为横向的格子数,米为竖向的格子数)沿着各自边缘线从左上角走到右下角,总共有多少种走法,要求不能走回头路,即:只能往右和往下走,不能往左和往上走。
2.思路分析
- 运用递归的思想,反过来将(0, 0)作为终点,将(m, n)作为起点,然后从起点(m, n)一直走到终点(0 ,0)
- 每次无论如何一定会向右走一步为(m , n-1)然后向下走为(m-1, n)
- 最后 m 或 n 等于0,那么就走到了边缘,也就只能走哪一条路
3.代码实现
#include <iostream>
using namespace std;
int Count(int m, int n)
{
if(m == 0 || n == 0)
return 1;
return Count(m - 1, n) + Count(m, n - 1);
}
int main()
{
int n = 0, m =0;
while(cin >> m >> n)
{
cout << Count(m, n) <<endl;
}
return 0;
}