Здравствуйте, у меня есть вопрос о домашнем задании, в котором я застрял .. любой намек или советы будут оценили. вопросы:рекурсивно печатать n, n-1, n-2, ... 3,2,1,2,3, ... n
Напишите одну рекурсивную функцию в C++, которая принимает в качестве аргумента положительное целое число n
, а затем напечатает n, n-1, n-2,...3,2,1,2,3,...n
. Сколько рекурсивных вызовов делает ваш алгоритм? Какое худшее время работы вашего алгоритма?
Я застрял в первой части. писать рекурсивную функцию, которая печатает n, n-1, n-2,...3,2,1,2,3,...n
до сих пор у меня есть:
print(int n)
{
if (n==0)
return;
cout<<n<<" ";
print(n-1);
return;
}
но это только отпечатки с n
в 1
я потерял о том, как я бы напечатать от 2
к n
, используя только один параметр и рекурсивно одиночная функция.
Я попытался это: что дает правильный вывод, но имеет петлю и имеет два параметра:
p and z has the same value.
void print(int p,int z)
{
if (p==0)
{
for(int x=2;x<=z; x++)
cout<<x<<" ";
return;
}
else
cout<<p<<" ";
print(p-1,z);
return;
}
любой намек или советы очень ценятся спасибо.
так, что она работает сейчас, но у меня возникают проблемы понимания того, как (вопрос в комментарии):
void print(int n)
{
if (n==1){
cout<<n;
return;
}
else
cout<< n;
print(n-1); // how does it get passed this? to the line below?
cout<<n; // print(n-1) takes it back to the top?
return;
}
СОВЕТ: возвратная степенная функция должна «ветер», а затем " размотать". Распечатайте что-нибудь в обоих случаях. – lurker