今日的知识点
1.为什么使用long long int?
斐波那契数列的特点是数值增长非常快,具体表现为:
- 第 10 项:55(int 类型足够)
- 第 20 项:6765(int 类型足够)
- 第 30 项:832040(接近 int 的最大值 2147483647)
- 第 40 项:102334155(超过许多系统中 int 的范围)
- 第 49 项:12586269025(远超过 int 的表示范围)
int类型的取值范围通常是 - 2147483648 到 2147483647,当斐波那契数超过这个范围时,就会发生整数溢出,导致结果错误。
而long long int类型能表示的范围大得多(通常是 - 9223372036854775808 到 9223372036854775807),足以容纳第 49 项甚至更大的斐波那契数,避免了溢出问题。
2.为什么使用%lld?
%lld是 C 语言中用于格式化输出long long int类型变量的格式控制符,它必须与long long int类型配套使用:
- 如果用%d输出long long int类型,会导致输出结果错误(格式不匹配)
- 反之,如果用%lld输出int类型,也会得到错误结果
#include<stdio.h> int main() { int n; int i; scanf("%d",&n); long long int arr[55]; arr[0]=0; arr[1]=1; for (i=2;i<n;i++) { arr[i]=arr[i-2]+arr[i-1]; } printf("%lld\n",arr[n-1]); return 0; }