有一个X*Y的网格,小团要在此网格上从左上角到右下角,只能走格点且只能向右或向下走。请设计一个算法,计算小团有多少种走法。给定两个正整数int x,int y,请返回小团的走法数目。
解法:把网格看做二维坐标,向下为正,向右为正:
设f(m,n)代表从坐标(m,n)到坐标(0,0)的移动方法,则
f(m,n)=f(m-1,n)+f(m,n-1)
开始为f(0,0)=0,f(0,1)=1,f(1,0)=1
进行递归运算,退出条件就是m,n至少有个为0,否则就要继续递归运算。
代码:
x,y = map(int,raw_input().split()) def step(n, m): if m == 0 or n == 0: return 1 else: return (step(n-1, m)+step(n, m-1)) print(step(x, y))