背景题目:有一个X*Y的矩阵网格,机器人在左上,每次只能向右或者向下行走,现求有多少种方法走到右下
对于这种问题,我们很容易想到用递归的方法解决
横向思考,当机器人往下走的时候,问题就转变成了(Y-1)*X的网格
同理,向右走就变成了(X-1)*Y的网格
终止条件是,当X-1或者Y-1时只有一种方法抵达
代码如下:
class robot{//机器人在x*y的矩阵中行走,要么向下,要么向右,如果向下走,问题就变成了求(x-1)Y矩阵的机器人走法 //如果向右走,问题就变成了求(Y-1)X矩阵的机器人走法 //所以使用递归解法 public int countways(int x,int y){ if(x == 1 || y == 1){ return 1; } return countways((x - 1),y)+countways(x,(y - 1)); } }