Нет необходимости использовать статическую переменную. Функция может быть написана проще.
#include <stdio.h>
void countDownUp( unsigned int n )
{
printf( "%u ", n );
if ( n )
{
countDownUp( n - 1 );
printf( "%u ", n );
}
}
int main(void)
{
countDownUp( 3 );
return 0;
}
вывод программы
3 2 1 0 1 2 3
Что касается реализации вашей функции
void countDownUp(unsigned int k)
{
countDown(k);
static int n=0;
if(n < k){
printf("%d ", n+1);
n++;
countDownUp(k);
}
}
, то вызов внутри функции
countDownUp(k);
заново вызывает countDown(k);
с тем же значением k
, которое было передано текущему вызову функции countDownUp
, потому что внутри функции значение k
не меняется ..
Также необходимо указать спецификатор преобразования %u
вместо %d
, поскольку переменная k
имеет тип unsigned int
.