我需要帮助为我的问题编写递归代码(当x和y都为零时递归结束),例如输入(2,1)到达(0,0),预期输出应为5:[在此输入图像描述][1]
这是我到目前为止所写的,但它不正确。。它可能是正确的一步下/左,但也不是两步:
#include<stdio.h>
int numOfPaths(int x,int y);
int main()
{
int x=0,y=0,sum=0;
printf("Enter the initial coordinates of Alice and her friends:");
if(scanf("%d%d", &x, &y)!=2)
{
printf("invalid input/n");
return 0;
}
sum=numOfPaths(x,y);
printf("The number of paths Alice and her friends have is:%d",sum);
return 0;
}
/*the change that I made on the function */
int numOfPaths(int x, int y)
{
if(x==0 && y==0)
return 1;
else
return(numOfPaths(x-1,y) + numOfPaths(x,y-1) +numOfPaths(x,y-2) + numOfPaths(x-2,y));
}
[1]: https://i.stack.imgur.com/SDxBF.png
1条答案
按热度按时间jq6vz3qz1#
我无意中发现了我的这个老答案,我必须承认,我有点困惑,我给了这样奇怪的代码。
下面是一个更好的版本:
如果需要限制最大轴移动,只需在for循环中添加
&& i <= 2
或其他移动限制。最好的赌注我可以有与描述您的问题: