При первой публикации, я прошу прощения, если мой вопрос не соответствует правилам, но любые отзывы о моем вопросе и публикации вопросов приветствуются:)!
Я работаю над проблемой, которая требует написания рекурсивной функции void с двумя параметрами: массивом и целым числом n, который поворачивает первые n целых чисел в массиве влево.
Таким образом, ввод будет выглядеть примерно так:
5 10 20 30 40 50
Выход:
50 40 30 20 10
Я написал функцию поворота с использованием рекурсии, и, похоже, она работает как положено.
#include <stdio.h>
void rotateLeft(int y[], int n){
int temp;
if (n > 1){
temp = y[0];
y[0] = y[1];
y[1] = temp;
rotateLeft(y + 1, n - 1);
}
}
int main(void){
int y[5];
int n;
int i = 0;
//input number from user
printf("Enter 'Count' number and 'elements' into array: ");
scanf("%d", &n);
for (i = 0; i < 5; i++){
scanf("%d", &y[i]);
}
rotateLeft(y, n);
for ( size_t i = 0; i < sizeof( y ) / sizeof( *y ); i++ ) printf( "%d ", y[i] );
puts( "" );
return 0;
}
Я использую Visual Code Studio и сталкиваюсь с двумя проблемами при попытке запустить этот код. Во-первых, он никогда не запрашивает мой ввод и просто выводит случайные числа в указанных местах массива, таких как:
3345345 345456 564565 56 4564
В другой раз код просто запускается и никогда не останавливается, и мне приходится принудительно останавливать его.
В этот момент я столкнулся со стеной, и я уверен, что проблема заключается в моей основной функции, но я ударился о стену в моей голове о том, куда идти. Я не программирую последние 5 лет, поэтому я очень не практикуюсь.
Любая помощь и руководство приветствуются!