递归 C# 它是如何工作的?

recursion c# how it works?

我想通过递归获取所有数组元素的汇总 这是代码。

   static int SummaryOfArray(int[]myArray, int i = 0, int result = 0)
    {
        

        result += myArray[i];
        i++;
        if (i >= myArray.Length)
        {
            return result;
        }
        else
        {
          SummaryOfArray(myArray, i,result);     //<---if I put the "result =" on the top here 
            return result;
        }

         
           

    }




    static void Main(string[] args)
    {

        int[] arr = { 3, 2, 5};

       
        Console.WriteLine(SummaryOfArray(arr));
    }

如果我将“result =”放在代码的前面,我的程序运行良好并给出 数组元素的正确总结, 但如果我删除它,结果会给我“3”。 但为什么???完全不懂,看了很多资料和视频 关于递归,但我仍然不明白为什么。 我理解“后进后出”,但为什么“结果”从 10 变为 3
最后呢?

   static int SummaryOfArray(int[] myArray, int i = 0, int result = 0)
{
    if(myArray.Length == i) return result;
    else  return  SummaryOfArray(myArray,i+1,result+myArray[i] );  
}

试试吧。