void dfs(int step,int n)
{
if(step<0)
return;
if(step==0 && n%2==0){
count++;
return;
}
for(int i=1;i<=2;i++){
step-=i; //
dfs(step,++n); //为什么这样写不对呢?正确的应该写为dfs(step-i,n+1);
}
}
step-=i;相当于step=step-i;
这里你更改了step的值
step-i
这里将结果作为实参并不改变step的值,所以结果当然不一样。
这个要看你的问题是什么,不知道问题是什么,没办法判断你的程序的对错。
void dfs(int step,int n)
{
if(step < 0)
{
return;
}
if((step == 0) && (n % 2 == 0))
{
//count++;
return;
}
for(int i=1;i<=2;i++)
{
step -= i; //
dfs(step,++n); //为什么这样写不对呢?正确的应该写为dfs(step-i,n+1);
}
}
int main()
{
dfs(10,10);
}