c - 为什么我无法正确打印第 47 个斐波那契数?

标签 c fibonacci cs50

我使用的是 64 位操作系统,因此我也无法正确打印第 46 个斐波那契数,该数小于 40 亿。

#include<cs50.h>
#include<stdio.h>

int main(void)
{  

    unsigned int n=50;
    int array[n];
    array[0]=0;
    array[1]=1;
    printf("%i\n",array[0]);
    printf("%i\n",array[1]);
    for(int i=2;i<n;i++)
    {
        array[i]=array[i-1]+array[i-2];
        printf("%i\n",array[i]);
    }

最佳答案

您必须使用 long long 作为数组的数据类型。因为您将存储整数范围的超出范围的数字。(-2,147,483,648 到 2,147,483,647) int i 的声明应该在 for 循环之前。

#include<stdio.h>

int main(void)
{

    int n=50;
    long long array[n];
    array[0]=0;
    array[1]=1;
    printf("%lli\n",array[0]);
    printf("%lli\n",array[1]);
    int i;
    for(i=2;i<n;i++)
    {
        array[i]=array[i-1]+array[i-2];
        printf("%lli\n",array[i]);
    }
}

关于c - 为什么我无法正确打印第 47 个斐波那契数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38300063/

相关文章:

c - 将逗号分隔的字符串转换为 double

c - 如何在 C 编程中传递二维字符串数组?

java - 为什么这个算法会为除 0 和 1 之外的所有种子打印斐波那契/三波那契序列?

c - 在 C 中实现拼写检查器 : Valgrind reports memory errors

c - 如何访问结构指针中的成员?

c++ - HELLO WORLD 的 COM Serial Port echo 中的奇怪字符

c - 分配期间从数组位置获取错误的数据值

java - 在java中,我如何找到第n个斐波那契数?

凯撒加密(段错误)