标题:全局变量
只看楼主
丘山君
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:87
专家分:154
注 册:2017-11-15
结帖率:54.55%
已结贴  问题点数:20 回复次数:1 
全局变量
有个小程序,求第N个斐波那契数的10007的余,1<N<1000000
我的第一次代码
程序代码:
#include<stdio.h>
#include <stdlib.h>
int main(){
    int i,n,F[1000001];//。。
    F[1]=1;
    F[2]=1;
    scanf("%d",&n);
    for(i=3;i<=n;++i)
        F[i]=(F[i-1]+F[i-2])%10007;
    printf("%d\n",F[n]);
    return 0;
}

运行是提示运行出错,
修改为一下:把1000001改为100001;运行出来了,猜测是内存不够?感觉不太可能、、
再改:把数组定义放在全局变量
程序代码:
#include<stdio.h>
#include <stdlib.h>
int F[1000001];//。。。。
int main(){
    int i,n;
    F[1]=1;
    F[2]=1;
    scanf("%d",&n);
    for(i=3;i<=n;++i)
        F[i]=(F[i-1]+F[i-2])%10007;
    printf("%d\n",F[n]);
    return 0;
}

运行成功。
想问下为什么?谢谢。
搜索更多相关主题的帖子: 全局变量 include int for 运行 
2018-03-21 23:53
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:20 
数组是连续的,可能太大块了,内存按块管理。
第一次是局部的,栈段有限。

[此贴子已经被作者于2018-3-22 05:00编辑过]

2018-03-22 04:46



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-485483-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 2.216078 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved