首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C的Mandelbrot递推函数

C的Mandelbrot递推函数
EN

Stack Overflow用户
提问于 2015-04-29 17:12:49
回答 1查看 2.5K关注 0票数 0

我对编码很陌生,需要做一个Mandelbrot函数。对于那些不知道的人来说,Mandelbrot集是一组复数。本质上,你先取一个复数,然后把它正方形,然后把它加到原来的复数中。例如,如果我使用数字1,集合将是0,1,2,5,26,.我得到的值是: 0,1,(1^2) +1= 2,(2^2) +1= 5,(5^2) +1= 26。现在,我的递归函数应该使用两个输入来找到这个集合的和:一个数字n,这是我们进入集合的距离。例如,如果n是3,那么我的第一个例子是(0,1,2)。第二个输入是复数结构,我已经把它定义为两个部分,一个虚数和一个实数。目标是将两个复数相乘,并将原来的复数相加。我已经为复杂的函数做了乘法和加法,所以本质上我只需要递归部分的帮助。以下是我到目前为止所拥有的:

代码语言:javascript
复制
    #include <math.h>
    #include <stdio.h>
    complex_t mandelbrot(doublen, complex_t c) {
            if(n == 0) {
               return c; 
            }
            else {
               complex_t first = mandelbrot(n-1, c);
               complex_t multiplied;
               complex_t multiplied = multiply_complex(first, first);
               return mandelbrot(n-1, multiplied); 
               }

对于这个程序,n将被设置为15,如果复数的实数的绝对值小于100,则它位于mandelbrot集合中。但是,这将在稍后完成;在这里,我只需要了解为什么我的递归过程没有正确处理。

EN

回答 1

Stack Overflow用户

发布于 2015-04-29 17:18:42

由于某种原因,Yo正在执行两个递归调用。但没有表演加法部分。您的函数的else部分应该类似于以下内容:

代码语言:javascript
复制
complex_t first = mandelbrot(n-1, c);
return add_complex(c, multiply_complex(first, first));

更新

n应该是整数,而不是双倍。在基本情况下,您可能不会以双对零的比较结束,因为由于浮点四舍五入的具体情况,完全相等的比较不太可能起作用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29950289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档