【发布时间】:2016-06-02 05:34:34
【问题描述】:
我编写了一个简单的斐波那契数列生成器,如下所示:
#include <iostream>
void print(int c, int r) {
std::cout << c << "\t\t" << r << std::endl;
}
int main() {
unsigned long long int a = 0, b = 1, c = 1;
for (int r = 1; r <= 1e3; r += 1) {
print(c, r);
a = b;
b = c;
c = a + b;
}
}
然而,随着r 的值接近 40,奇怪的事情开始发生。 c 的值在负数和正数之间波动,尽管事实上他是一个 unsigned 整数,当然斐波那契数列不可能完全一样。
unsigned long long 整数是怎么回事?
即使对于 long long 整数,c 是否也会变得太大?
【问题讨论】:
-
所以您打算将第 1000 个斐波那契数存储在(可能)64 位数字中?第千Fibonacci数FYI是:43466557686937456435688527675040625802564660517371780402481729089536555417949051890403879840079255169295922593080322634775209689623239873322471161642996440906533187938298969649928516003704476137795166849228875.应使用一些自定义BIGINT数据类型跨度>
-
如果这是一个选项,python 是一个不错的语言选择,因为它具有内置的 bigint 支持。
标签: c++ unsigned-integer negative-integer