新的C#增加了一些好用的特性,本地函数提升了递归的性能,模式匹配阅读性更好,今天来试用一下,先写个斐波那齐方法。
public static ulong[] GetFibonacciArray(ulong index)
{
ulong[] fibonacciArray = default;
if (index < 1)
{
throw new ArgumentOutOfRangeException(nameof(index));
}
else
{
fibonacciArray = new ulong[index];
}
for (ulong i = 0; i < index; i++)
{
fibonacciArray[i] = LocalFibonacci(i);
}
return fibonacciArray;
static ulong LocalFibonacci(ulong index) => index switch
{
< 1 => 0,
1 => 1,
_ => LocalFibonacci(index - 1) + LocalFibonacci(index - 2)
};
}
再写个阶乘的方法
public static ulong Factorial(ulong x)
{
return LocalFactorial(x);
static ulong LocalFactorial(ulong x) => x switch
{
< 1 or 1 => 1,
_ => x * LocalFactorial(x - 1)
};
}
运行看看
using FibonacciAndFactorial;
Console.WriteLine("获取斐波拉齐数组");
foreach(var i in SimpleLibrary.GetFibonacciArray(28))
{
Console.Write(i);
Console.Write(" ");
}
Console.WriteLine();
Console.WriteLine("演示阶乘");
for (int i = 0; i < 11; i++)
{
Console.WriteLine($"{i,3}!={SimpleLibrary.Factorial(Convert.ToUInt64(i))}");
}
Console.WriteLine();
写代码时感觉很爽,以后就用它了。