递归 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] );
}
试试吧。
我想通过递归获取所有数组元素的汇总 这是代码。
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] );
}
试试吧。