Skip to content

Commit c60a83f

Browse files
committed
Add 递归算法数组求
1 parent d18bdef commit c60a83f

2 files changed

Lines changed: 47 additions & 5 deletions

File tree

‎DotNetGuidePractice/HelloDotNetGuide/Program.cs‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ static void Main(string[] args)
1818

1919
#region 常见算法
2020

21+
递归算法.RecursiveArraySum();
2122
//递归算法.FibonacciSum();
2223
//递归算法.RecursiveAlgorithmSum();
2324
//基数排序算法.RadixSortRun();

‎DotNetGuidePractice/HelloDotNetGuide/常见算法/递归算法.cs‎

Lines changed: 46 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ public class 递归算法
66

77
/// <summary>
88
/// 使用C#语言编写的递归算法来计算1+2+3+4+…+100的结果
9-
/// 最终结果是:5050
9+
/// 最终输出结果是:5050
1010
/// </summary>
1111
public static void RecursiveAlgorithmSum()
1212
{
@@ -32,26 +32,67 @@ public static int SumNumbers(int n)
3232

3333
/// <summary>
3434
/// 使用递归算法来实现求解斐波纳契数列中第30位数的值
35-
/// 最终结果为832040
35+
/// 最终输出结果为:832040
3636
/// </summary>
3737
public static void FibonacciSum()
3838
{
39-
int result = Fibonacci(30);
40-
Console.WriteLine("第30位斐波那契数是:" + result);
39+
int n = 30;
40+
int result = Fibonacci(n);
41+
Console.WriteLine("第 " + n + "位斐波那契数是:" + result);
4142
}
4243

4344
public static int Fibonacci(int n)
4445
{
45-
if (n <= 2)
46+
if (n <= 0)
47+
{
48+
return 0;
49+
}
50+
else if (n > 0 && n <= 2)
4651
{
4752
return 1;
4853
}
4954
else
5055
{
56+
// 递归情况:调用自身计算前两个数字之和
5157
return Fibonacci(n - 1) + Fibonacci(n - 2);
5258
}
5359
}
5460

5561
#endregion
62+
63+
#region 递归算法数组求
64+
65+
/// <summary>
66+
/// 递归算法数组求
67+
/// 最终输出结果为:259
68+
/// </summary>
69+
public static void RecursiveArraySum()
70+
{
71+
int[] numbers = { 1, 88, 66, 4, 100 };
72+
int sum = ArraySum(numbers, 0);
73+
Console.WriteLine("数组元素的总和为:" + sum);
74+
}
75+
76+
/// <summary>
77+
/// 计算数组元素的总和
78+
/// </summary>
79+
/// <param name="arr">arr</param>
80+
/// <param name="index">index</param>
81+
/// <returns></returns>
82+
public static int ArraySum(int[] arr, int index)
83+
{
84+
if (index >= arr.Length)
85+
{
86+
// 基本情况:数组为空或者已经遍历完所有元素
87+
return 0;
88+
}
89+
else
90+
{
91+
// 递归调用:当前元素加上剩余元素的总和
92+
return arr[index] + ArraySum(arr, index + 1);
93+
}
94+
}
95+
96+
#endregion
5697
}
5798
}

0 commit comments

Comments
 (0)