刚学习C++ ,递归这里有个问题不怎么明白!希望有人能帮我解释下!最好能一句句解释.

2025年01月07日 07:42
有3个网友回答
网友(1):

int decrement(int i)
{
cout<<"inside decrement()"< i--;
//关键是下面的,如果大于0的话,就递归进去,此时i的值已经减1了
if (i>0)
{
return decrement(i);
}
else
return (i);
}

整个过程是
调用函数次数:
1. i=2; 因为i>0,所以再次调用函数
2. i=1; 同上;
3. i=0; 因为i不大于0,所以返回0;
记住,第二次调用时要返回第三次调用的结果,所以返回0,第一次调用返回第二次的结果,所以还是0,所以最终结果为0.

递归就是要自己好好的理顺一下,挺麻烦的

网友(2):

int maze[m+2][p+2];
int mark[m+2][p+2];

把这两个数组的声明放到main的外部,这样就声明成全局的,才可以在SeekPath函数里面使用。

网友(3):

其实就是数列问题,通过数列求公式。所以递归都可以按这个理解。