我对编码很陌生,需要做一个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)。第二个输入是复数结构,我已经把它定义为两个部分,一个虚数和一个实数。目标是将两个复数相乘,并将原来的复数相加。我已经为复杂的函数做了乘法和加法,所以本质上我只需要递归部分的帮助。以下是我到目前为止所拥有的:
#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集合中。但是,这将在稍后完成;在这里,我只需要了解为什么我的递归过程没有正确处理。
发布于 2015-04-29 17:18:42
由于某种原因,Yo正在执行两个递归调用。但没有表演加法部分。您的函数的else部分应该类似于以下内容:
complex_t first = mandelbrot(n-1, c);
return add_complex(c, multiply_complex(first, first));更新
n应该是整数,而不是双倍。在基本情况下,您可能不会以双对零的比较结束,因为由于浮点四舍五入的具体情况,完全相等的比较不太可能起作用。
https://stackoverflow.com/questions/29950289
复制相似问题