大神,C++代码递归代码求详细注释,特别是if中的看不懂,谢谢了

void foo(int x, int y)
{
if (x > 1000) return;
if (x == y && x == 1)
{
printf("%d %d ", 1, 1);
foo(x + y, x);
return;
}
else
{
printf("%d ", x);
foo(x + y, x);
}

}

void foo(int x, int y)
{
if (x > 1000) return; //输出1000以内的
if (x == y && x == 1) // 如果是初始的2个
{
printf("%d %d ", 1, 1); //输出 1 1
foo(x + y, x); //递归调用第三项
return;
}
else
{
printf("%d ", x); //输出当前项
foo(x + y, x); //递归调用下一个项
}
}

各一个小学就学过的数列给你
0 1 1 2 3 5 8 ..........一直到一千,你就知道这个递归是在干嘛了。