24小时热门版块排行榜    

查看: 324  |  回复: 2

weivichen

铁虫 (初入文坛)

[求助] 一个小问题

program main
implicit none
integer a(10)
integer i
a(1)=0
a(2)=1
forall(i=3:10)
a(i)=a(i-1)+a(i-2)
end forall
write(*,"(10i4)" ) a
stop
end
上面程序要实现费氏数列前十个数字,也就是分别为0 1 1 2 3 5 8 13 21 34 到了forall那边是不是有什么问题呢?用do循环就对,可是forall结果就成了0 1 1 1 0 0 0 0 0 0

[ Last edited by jjdg on 2012-9-27 at 00:24 ]
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chembetsey

木虫 (小有名气)

【答案】应助回帖

★ ★ ★
感谢参与,应助指数 +1
jjdg: 金币+1, 感谢参与 2012-09-27 00:24:46
weivichen: 金币+2, ★★★★★最佳答案 2012-09-27 11:08:50
forall是并行执行的,需要各个运算之间没有依赖性,你的a(i)依赖于其他a(i)的数值,必须顺序执行,用forall不能保证结果正确。
2楼2012-09-26 22:54:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

weivichen

铁虫 (初入文坛)

引用回帖:
2楼: Originally posted by chembetsey at 2012-09-26 22:54:33
forall是并行执行的,需要各个运算之间没有依赖性,你的a(i)依赖于其他a(i)的数值,必须顺序执行,用forall不能保证结果正确。

谢谢,明白了
3楼2012-09-27 11:08:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 weivichen 的主题更新
信息提示
请填处理意见