以多进程方式计算斐波那契数?

时间:2010-10-18 11:24:19

标签: c fork fibonacci multiprocess

我正在编写多进程斐波那契数字计算器,我有一个跟踪斐波那契数字的文件,首先打开文件并写入第一个斐波纳契数字(0和1),然后做fork,其子进程读取最后一个两个数字将它们加起来并将下一个写入文件并关闭文件并再次分叉这个过程继续像forking和child将数字相加并将计算出的数字写入文件,使用fork里面的不是一个好的解决方案既不是递归调用,对问题有任何建议吗?

  

以下是我们遇到的问题的链接   谈论多进程的一部分   问题是第2部分

     

http://cse.yeditepe.edu.tr/~sbaydere/fall2010/cse331/files/assignments/F10A1.pdf

4 个答案:

答案 0 :(得分:2)

假设你是以“简单”的方式计算它们(即没有使用狡猾的公式),我认为它根本不适合并行处理。

很容易想出一个O(n)解决方案,但每个结果都取决于前一个,所以并行化本身就很棘手。我看不出你目前的并行方法有什么好处,因为在每个进程完成自己的工作并分叉一个孩子获得下一个数字之后,它基本完成了...所以你不妨做分叉孩子的工作在现有的过程中。

答案 1 :(得分:2)

Fibonacci数计算是一个非常奇怪的想法去多进程。实际上,要计算一个数字,你需要知道前两个。多个进程不能计算其他数字,而是下一个数字,只能计算下一个数字。多个进程都将计算下一个斐波纳契数。无论如何,你会仔细检查。

答案 2 :(得分:1)

您可能希望看一下这篇文章:

http://cgi.cse.unsw.edu.au/~dons/blog/2007/11/29

这里有更多的想法:

http://www.haskell.org/haskellwiki/The_Fibonacci_sequence

答案 3 :(得分:0)

可能这不是解决你的问题,但这是计算给定范围的斐波纳契数的一种微不足道的方法

int fibo(int n) { return (n<=2)?n:(fibo(n-1))+(fibo(n-2)); }