在面试的时候有遇到这个数列的实现算法,面试比较紧张没有想出来具体的实现,后面自己研究了下,自己的算法(C#语言)如下:
static void Main(string[] args)
{
int n = 100;//n为第几个数
long[] nums = new long[n];
nums[0] = 1L;
nums[1] = 1L;
var num = GetNum(n-1, nums);
}
private static long GetNum(int n, long[] nums)
{
var num1 = nums[n - 1];
if(num1 == 0)
{
num1 = GetNum(n - 1, nums);
}
var num2 = nums[n - 2];
nums[n] = num1 + num2;
return num1 + num2;
}
这边说明下,为何使用长整形呢?因为发现到一定数量时如果使用的是int型会溢出,如果大家有更好的写法,欢迎大家指出。