我一直在做运动的递归功能,而且有一部分让我很困惑.这是整个代码的样子:
void RekFunkcija(int * pok, int max)
{
if (max != 0)
{
cout << pok[max - 1] << endl;
RekFunkcija(pok + 1, max - 1);
}
}
void main()
{
const int max = 5;
int niz[] = { max, 63, max, 126, 252 };
RekFunkcija(niz, max);
}
Run Code Online (Sandbox Code Playgroud)
所以这里的输出是:
令我困惑的是这部分递归函数:cout << pok[max - 1] << endl;
我不明白为什么它总是输出数组的最后一个成员(252)?索引号(max-1)递减1?输出不应该是:252,126,5,63,5?这与pok+1论点有什么关系吗?先感谢您.
真正的问题是在功能中使用pok+1和max-1一起使用.当是第一次迭代之后252被印刷,所述情况是:
pok在递增变[63,4,126,252]和max变4.现在pok[max-1]再说一遍4.所以,如果你想打印的所有数组元素替换pok+1函数调用RekFunkcija(pok + 1, max - 1);来RekFunkcija(pok, max - 1);