递归计算到点的路径数

时间:2014-01-01 21:51:50

标签: c recursion

我写过这段代码,我不太确定它是否运作良好。 例如,如果我一次只能向上或向上一个,那么从(0,0)到(2,2)有多少条路径?

我的代码:

int paths(int x,int y) {
    if (0==x || 0==y) {
        return 1;
    }
        return paths(x-1,y) + paths(x,y-1);
}

1 个答案:

答案 0 :(得分:1)

你在那里有趣的功能,我会抓住这个,也许你可以把类似的东西

printf("(x-1,y)=(%d,%d)",x-1,y);
printf(" (x,y-1)=(%d,%d)\n",x,y-1); 

paths函数中,以便更好地观察笛卡尔平面中发生的情况。打印类似:

(x-1,y)=(1,2) (x,y-1)=(2,1)
(x-1,y)=(0,2) (x,y-1)=(1,1)
(x-1,y)=(0,1) (x,y-1)=(1,0)
(x-1,y)=(1,1) (x,y-1)=(2,0)
(x-1,y)=(0,1) (x,y-1)=(1,0)
paths=6