Как работает рекурсия

#c#-4.0

#c #-4.0

Вопрос:

Привет, у меня здесь есть пример кода, в котором я пытаюсь сдвинуть массив на заданное количество раз.В выходных данных я хочу напечатать окончательный массив, сгенерированный после прохождения всех сдвигов.

 public static void Main(string[] args)
        {
            int[] oldArray={1,2,3,4};
            int[] newArray=Program.shiftRight(oldArray,3);
           foreach(var item in newArray)
                 Console.Write(item  " ");
        }

        public static int[] shiftRight(int[] arr,int times)
        {
            int[] demo = new int[arr.Length];

                for (int i = 0; i < arr.Length; i  )
                {
                   demo[(i 1) % demo.Length] = arr[i];
                }
             foreach(var item in demo)
                 Console.Write(item  " ");
            Console.WriteLine("");
            times--;
               if(times>0)
               {                       
                   shiftRight(demo,times);
               }
              Console.WriteLine("n");
            return demo;

        }
  

Результат, который я получаю, это
Привет, мир!

 4 1 2 3 
3 4 1 2 
2 3 4 1


4 1 2 3 
  

может кто-нибудь объяснить, почему в основном я не получаю вывод как «2 3 4 1»
но «4 1 2 3»?Заранее спасибо.

Комментарии:

1. Вы прошли через это с помощью отладчика?

2. @Hans нет блока try / catch.