由斐波那契数列引发的问题。
来源:互联网 发布:苹果电脑删除不了软件 编辑:程序博客网 时间:2024/06/08 04:48
下面的程序是今天写的:
#include <stdio.h>unsigned long long int fib1(unsigned long long int n){unsigned long long int a=0,b=1;unsigned long long int c;if (n == 1 ){ return 0; } if (n == 2){ return 1; }else {for(int i=3;i<=n;i++){c=a+b;a=b;b=c;}return c;}}int main(){ int n;printf("请输入一个正整数:");scanf("%d",&n);//for(n=1;n<100;n++){printf("f(%d)-->%Ld\n",n,fib1(n));//}return 0 ;}
问题来了···当数值超过19位时,这个数列的值就不对了,,经过查找资料和百度一翻··发现了问题的所在,原来是数值超过超出了long long int 的取值范围。
int 型和long型的取值范围是(2^32):--2147483648~2147483647
无符号(unsigned)int 和long的取值范围是:0~4294967295
long long型 和int_64型的取值范围是(2^64):0~18446744073709551616
无符号(unsigned)int 和long的取值范围是:-9223372036854775808~9223372036854775807
而设置了long int型的斐波那契数列只能算到47位···到48位就溢出了,设置了long long型的斐波那契数列只能算到93位···到94位就溢出了。
那么怎么才能表示20位以上的数值呢?利用高精度 。。。“高精度就是用一个一维数组和一个整数来表示一个超大数字,数组的每一个单元存放超大数字的每一位或者几位数,整数表示这个超大数字的位数。”
- 由斐波那契数列引发的问题。
- 由斐波那契数列问题引出的问题
- 从小猴摘桃子问题引发的斐波那契数列与递归的思考
- 由斐波那列数引发的思考
- 计算一个数字由斐波那契数列组成的个数
- 由递归引出的斐波那契数列(暂)
- “斐波那契数列”问题的递推算法
- “斐波那契数列”问题的递推算法
- “斐波那契数列”问题的递推算法
- “斐波那契数列”问题的递推算法
- “斐波那契数列”问题的递推算法
- “斐波那契数列”问题的递推算法
- “斐波那契数列”问题的递推算法
- “斐波那契数列”问题的递推算法
- “斐波那契数列”问题的递推算法
- “斐波那契数列”问题的递推算法
- “斐波那契数列”问题的递推算法
- “斐波那契数列”问题的递推算法
- 新浪微博SSO授权以及分享(实战)
- OpenCV 2 学习笔记(22): 腐蚀与膨胀
- 今晚的恒大比赛
- Linux命令(2):ls命令
- 黑马程序员------Java的注解与类加载器
- 由斐波那契数列引发的问题。
- MAX232(MAX3232)电平转换芯片的工作原理
- java中基本类型占用字节数
- 求第K小/大的数(树状数组解法)
- 内存中数据如何分配
- HDU 1052 Tian Ji -- The Horse Racing
- hdu 1254推箱子(两次bfs)
- javascript面向对象(属性和方法应注意的问题)
- 关于由结构体首地址算其内部的一些变量时所用的偏移和CONTAINING_RECORD宏