有一个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))

  

posted on 2018-10-30 09:55  Google-boy  阅读(253)  评论(0编辑  收藏  举报