Nếu những gì bạn muốn làm là làm cho chức năng hiệu quả hơn, thì hãy sử dụng bảng tra cứu. Bảng tra cứu nhỏ một cách đáng ngạc nhiên chỉ có 47 mục nhập - mục nhập tiếp theo sẽ làm tràn một số nguyên không dấu 32 bit. Tất nhiên, nó cũng làm cho hàm trở nên tầm thường khi viết.
class Sequences
{
// Store the complete list of values that will fit in a 32-bit unsigned integer without overflow.
private static readonly uint[] FibonacciSequence = { 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144,
233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418,
317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 24157817, 39088169,
63245986, 102334155, 165580141, 267914296, 433494437, 701408733, 1134903170, 1836311903, 2971215073
};
public uint fibn(uint N)
{
return FibonacciSequence[N];
}
}
Rõ ràng bạn có thể làm điều tương tự đối với các giai thừa.