У меня есть некоторые трудности с отслеживанием рекурсивных функций. Например, возьмем следующую функцию для строки перестановки в качестве примера:Ручная трассировка рекурсивных функций
void string_permutation(string str, int mid, int end)
{
if (mid == end)
cout << str << endl;
else
{
for (int i = mid; i <= end; i++)
{
swap(str[mid], str[i]);
string_permutation(str, mid + 1, end);
swap(str[mid], str[i]);
}
}
}
Учитывая вход, скажем "abcd"
и назвать его:
string str = "abcd";
string_permutation(str, 0, str.size()-1);
Как я могу быстро (вручную отслеживать, т.е. без отладчик, подумайте, что вы в интервью) узнаете, скажем, 10-й результат такой функции? В более общем плане, как отслеживать рекурсивную функцию?
Запустите его через отладчик – DrYap
Я бы сказал, хороший способ сделать это с помощью ручки и бумаги работает лучше :) – legends2k
@DrYap Мне хотелось бы увидеть некоторое предложение о том, как это сделать с помощью ручки и бумага. – herohuyongtao