有一个XxY的网格,一个机器人只能走格点且只能向右或向下走,要从左上角走到右下角。请设计一个算法,计算机器人有多少种走法。
给定两个正整数int x,int y,请返回机器人的走法数目。保证x+y小于等于12。
测试样例:
2,2
返回:2
主要思想:下面是一个3x3的网格,各顶点坐标如下,当它的横纵坐标中有一个坐标为1时证明,该点到目标顶点只有一条路可走,从起点(3,3)开始出发,共有两条路(2,3)和(3,2)——(x-1,y)和(x,y-1)
下图为考虑走的路径,当它的横纵坐标中有一个坐标为1时证明,该点到目标顶点只有一条路可走,所以返回值为1,然后递归;
public class Main {
public static int countWays(int x, int y) {
if(x==1||y==1){
return 1;
}
return countWays(x-1,y)+countWays(x,y-1);
}
public static void main(String[] args) {
int c = Main.countWays(3,3);
System.out.println(c);
}
}