Cho em hỏi nhanh về thuật toán quay lui

Chào anh chị !
Em thắc mắc về tại sao thuật toán quay lui khi chạy lúc j = 5 in ra tại sao chương trình lại tiếp tục chạy ?

#include<iostream>

using namespace std;
void inputValue(int a[], int n)
{
	for (int i = 1; i <= n; i++)
		a[i] = i;
}
void printResult(int a[], int k)
{
	for (int i = 1; i <= k; i++)
		cout << a[i];
	cout << endl;
}
void returnValue(int a[], int n, int k, int i)
{
	for (int j = a[i - 1] + 1; j <= n - k + i; j++)
	{
		a[i] = j;
		if (i == k)
			printResult(a, k);
		else
			returnValue(a, n ,k , i+1);
	}
}

int main()
{
	int n, k, a[50];
	cout << "Nhap n: ";
	cin >> n;
	inputValue(a, n);
	cout << "Nhap k: ";
	cin >> k;
	a[0] = 0;
	returnValue(a, n, k, 1);
	system("pause");
}
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?