知乎問答之 C# 數字求和有哪些方法
問題:數字求和,創建一個以數字作為參數的函數。 將所有數字從 1 加到你傳遞給函數的數字上。 例如,如果輸入為 4,則你的函數應返回 10,因為 1 + 2 + 3 + 4 = 10。
public class Program
{
public static int AddUp(int num)
{
}
}
解法 1:公式法,即高斯求和法。
高斯求和法
public class Program
{
public static int AddUp(int num) => (num * (num+1)) / 2 ;
}
解法 2:C# 特有的方法,LINQ Enumerable.Sum 方法。
using System.Linq;
public class Program
{
public static int AddUp(int num) => Enumerable.Range(1, num).Sum();
}
解法 3:循環法。
for 循環
public class Program
{
public static int AddUp(int num)
{
int sum = 0;
for (int i = 0; i <= num; i++){
sum = i + sum;
}
return sum;
}
}
while 循環
public class Program
{
public static int AddUp(int num)
{
int i = 1;
int sum = 0;
while(i <= num){
sum += i;
i++;
}
return sum;
}
}
解法 4:經典遞歸法。
public class Program
{
public static int AddUp(int num)
{
return (num==0)?0:num+AddUp(num-1);
}
}
解法 5:去探索吧......
參考部分整理了這次思考的資源。
數學家高斯
參考:
Techniques for Adding the Numbers 1 to 100:
Enumerable.Sum Method:
Enumerable.Range(Int32, Int32) Method:
C# Sum Method: Add up All Numbers:
for (C# reference):
Sum of natural numbers using recursion:
C# Back to Basics – Recursion and Recursive Methods:
知乎想法 C# 數字求和有哪些方法