 <p>To use recursion you should have a <strong>stop test</strong> and be sure to always launch the next step on a <strong>smaller problem</strong>. </p> <p>Try this : (Not sure if Array.SubArray(int) is a real function but that is the idea.</p> <pre><code>static void Main(string[] args) { int[] Array=new int[]{10,233,34}; int _MaxVal = CalculateMax(Array); Console.WriteLine(_MaxVal); Console.ReadKey(); } private static int CalculateMax(int[] Array) { if (Array.Length &gt; 0) { int maxSubArray = CalculateMax(Array.SubArray(1)); // Use recursive function on the SubArray starting at index 1 (that the smaller problem) if (maxSubArray &gt; Array[0]) { return maxSubArray; } else { return Array[0]; } } else { return 0; // Stop test } } </code></pre> <p><strong>Note</strong> : it will not work with negative value.</p>