我使用recursion.But为show fibonacci系列编写此代码.对于n> 43,它没有正确显示(例如:对于n = 100显示:-980107325).
#include#include void fibonacciSeries(int); void fibonacciSeries(int n) { static long d = 0, e = 1; long c; if (n>1) { c = d + e; d = e; e = c; printf("%d \n", c); fibonacciSeries(n - 1); } } int main() { long a, n; long long i = 0, j = 1, f; printf("How many number you want to print in the fibonnaci series :\n"); scanf("%d", &n); printf("\nFibonacci Series: "); printf("%d", 0); fibonacciSeries(n); _getch(); return 0; }
eerorika.. 5
它的值fib(100)
太大,即使是64位数也会溢出.要对如此大的值进行操作,您需要执行任意精度算术.C或C++标准库不提供任意精度算术,因此您需要自己实现它或使用其他人编写的库.
对于适合您的较小值long long
,您的问题是您使用了错误的printf
格式说明符.要打印long long
,您需要使用%lld
.
它的值fib(100)
太大,即使是64位数也会溢出.要对如此大的值进行操作,您需要执行任意精度算术.C或C++标准库不提供任意精度算术,因此您需要自己实现它或使用其他人编写的库.
对于适合您的较小值long long
,您的问题是您使用了错误的printf
格式说明符.要打印long long
,您需要使用%lld
.